winbindd: allow validation level 6 in winbind_SamLogon
authorStefan Metzmacher <metze@samba.org>
Tue, 23 Jan 2018 16:57:37 +0000 (17:57 +0100)
committerRalph Boehme <slow@samba.org>
Sat, 10 Feb 2018 07:35:17 +0000 (08:35 +0100)
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13260

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/winbindd/winbindd_dual_srv.c

index 5c12414fd25c209e7ef167286cb466322697445d..66b4ee82a25b33c4fc13a0cb92cdf068d26b5498 100644 (file)
@@ -891,7 +891,11 @@ NTSTATUS _winbind_SamLogon(struct pipes_struct *p,
                return NT_STATUS_REQUEST_NOT_ACCEPTED;
        }
 
-       if (r->in.validation_level != 3) {
+       switch (r->in.validation_level) {
+       case 3:
+       case 6:
+               break;
+       default:
                return NT_STATUS_REQUEST_NOT_ACCEPTED;
        }
 
@@ -965,15 +969,31 @@ NTSTATUS _winbind_SamLogon(struct pipes_struct *p,
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
-       status = map_validation_to_info3(p->mem_ctx,
-                                        validation_level,
-                                        validation,
-                                        &r->out.validation.sam3);
-       TALLOC_FREE(validation);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
+       switch (r->in.validation_level) {
+       case 3:
+               status = map_validation_to_info3(p->mem_ctx,
+                                                validation_level,
+                                                validation,
+                                                &r->out.validation.sam3);
+               TALLOC_FREE(validation);
+               if (!NT_STATUS_IS_OK(status)) {
+                       return status;
+               }
+               return NT_STATUS_OK;
+       case 6:
+               status = map_validation_to_info6(p->mem_ctx,
+                                                validation_level,
+                                                validation,
+                                                &r->out.validation.sam6);
+               TALLOC_FREE(validation);
+               if (!NT_STATUS_IS_OK(status)) {
+                       return status;
+               }
+               return NT_STATUS_OK;
        }
-       return NT_STATUS_OK;
+
+       smb_panic(__location__);
+       return NT_STATUS_INTERNAL_ERROR;
 }
 
 static WERROR _winbind_LogonControl_REDISCOVER(struct pipes_struct *p,