s3:rpc_server/samr: correctly handle session_extract_session_key() failures
authorStefan Metzmacher <metze@samba.org>
Sun, 28 Feb 2016 22:32:50 +0000 (23:32 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 22 Mar 2016 14:50:15 +0000 (15:50 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/rpc_server/samr/srv_samr_nt.c

index 4b4b77a7dcfa631b1e1c30817307eb68a04c0840..7eb06cfe90d8478813c1172a4d33e5e59b032660 100644 (file)
@@ -5097,7 +5097,7 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
                case 18:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
                        if(!NT_STATUS_IS_OK(status)) {
-                               return status;
+                               break;
                        }
                        /* Used by AS/U JRA. */
                        status = set_user_info_18(&info->info18,
@@ -5114,7 +5114,7 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
                case 21:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
                        if(!NT_STATUS_IS_OK(status)) {
-                               return status;
+                               break;
                        }
                        status = set_user_info_21(&info->info21,
                                                  p->mem_ctx,
@@ -5124,6 +5124,9 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
 
                case 23:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
+                       if(!NT_STATUS_IS_OK(status)) {
+                               break;
+                       }
                        arcfour_crypt_blob(info->info23.password.data, 516,
                                           &session_key);
 
@@ -5137,6 +5140,9 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
 
                case 24:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
+                       if(!NT_STATUS_IS_OK(status)) {
+                               break;
+                       }
                        arcfour_crypt_blob(info->info24.password.data,
                                           516,
                                           &session_key);
@@ -5150,6 +5156,9 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
 
                case 25:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
+                       if(!NT_STATUS_IS_OK(status)) {
+                               break;
+                       }
                        encode_or_decode_arc4_passwd_buffer(
                                info->info25.password.data,
                                &session_key);
@@ -5163,6 +5172,9 @@ NTSTATUS _samr_SetUserInfo(struct pipes_struct *p,
 
                case 26:
                        status = session_extract_session_key(p->session_info, &session_key, KEY_USE_16BYTES);
+                       if(!NT_STATUS_IS_OK(status)) {
+                               break;
+                       }
                        encode_or_decode_arc4_passwd_buffer(
                                info->info26.password.data,
                                &session_key);