libcli:auth: Return NTSTATUS for netlogon_creds_encrypt_samlogon_logon()
authorAndreas Schneider <asn@samba.org>
Wed, 29 May 2019 14:46:36 +0000 (16:46 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 27 Jun 2019 12:54:23 +0000 (12:54 +0000)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
libcli/auth/credentials.c
libcli/auth/netlogon_creds_cli.c
libcli/auth/proto.h

index 562dd4f3c585acb097e564c1066316a0f163f947..b7d2c4fa3a3979ac4074ee2337a8bd1d194e7705 100644 (file)
@@ -811,11 +811,13 @@ void netlogon_creds_decrypt_samlogon_logon(struct netlogon_creds_CredentialState
        netlogon_creds_crypt_samlogon_logon(creds, level, logon, false);
 }
 
-void netlogon_creds_encrypt_samlogon_logon(struct netlogon_creds_CredentialState *creds,
-                                          enum netr_LogonInfoClass level,
-                                          union netr_LogonLevel *logon)
+NTSTATUS netlogon_creds_encrypt_samlogon_logon(struct netlogon_creds_CredentialState *creds,
+                                              enum netr_LogonInfoClass level,
+                                              union netr_LogonLevel *logon)
 {
        netlogon_creds_crypt_samlogon_logon(creds, level, logon, true);
+
+       return NT_STATUS_OK;
 }
 
 union netr_LogonLevel *netlogon_creds_shallow_copy_logon(TALLOC_CTX *mem_ctx,
index 01831930cefee6cd05cfbd1f75cf0da0f8d741eb..8dce4cc30e17b99208a048e95e45ae2b50b00436 100644 (file)
@@ -2365,9 +2365,15 @@ static void netlogon_creds_cli_LogonSamLogon_start(struct tevent_req *req)
                                return;
                        }
 
-                       netlogon_creds_encrypt_samlogon_logon(state->ro_creds,
-                                                             state->logon_level,
-                                                             state->logon);
+                       status = netlogon_creds_encrypt_samlogon_logon(state->ro_creds,
+                                                                      state->logon_level,
+                                                                      state->logon);
+                       if (!NT_STATUS_IS_OK(status)) {
+                               status = NT_STATUS_ACCESS_DENIED;
+                               tevent_req_nterror(req, status);
+                               netlogon_creds_cli_LogonSamLogon_cleanup(req, status);
+                               return;
+                       }
                }
 
                subreq = dcerpc_netr_LogonSamLogonEx_send(state, state->ev,
@@ -2419,9 +2425,13 @@ static void netlogon_creds_cli_LogonSamLogon_start(struct tevent_req *req)
                return;
        }
 
-       netlogon_creds_encrypt_samlogon_logon(&state->tmp_creds,
-                                             state->logon_level,
-                                             state->logon);
+       status = netlogon_creds_encrypt_samlogon_logon(&state->tmp_creds,
+                                                      state->logon_level,
+                                                      state->logon);
+       if (tevent_req_nterror(req, status)) {
+               netlogon_creds_cli_LogonSamLogon_cleanup(req, status);
+               return;
+       }
 
        state->validation_level = 3;
 
index 6bf83d60e81279b4911408b75487b3df0f104f16..88ef50357c925f68d5c014275b5ff46d7438dd88 100644 (file)
@@ -68,9 +68,9 @@ NTSTATUS netlogon_creds_encrypt_samlogon_validation(struct netlogon_creds_Creden
 void netlogon_creds_decrypt_samlogon_logon(struct netlogon_creds_CredentialState *creds,
                                           enum netr_LogonInfoClass level,
                                           union netr_LogonLevel *logon);
-void netlogon_creds_encrypt_samlogon_logon(struct netlogon_creds_CredentialState *creds,
-                                          enum netr_LogonInfoClass level,
-                                          union netr_LogonLevel *logon);
+NTSTATUS netlogon_creds_encrypt_samlogon_logon(struct netlogon_creds_CredentialState *creds,
+                                              enum netr_LogonInfoClass level,
+                                              union netr_LogonLevel *logon);
 union netr_LogonLevel *netlogon_creds_shallow_copy_logon(TALLOC_CTX *mem_ctx,
                                        enum netr_LogonInfoClass level,
                                        const union netr_LogonLevel *in);