s4:rpc_server/netlogon: return a zero return_authenticator and rid on error
authorStefan Metzmacher <metze@samba.org>
Sat, 11 Jan 2014 16:13:04 +0000 (17:13 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 22 Jan 2014 16:12:29 +0000 (17:12 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/netlogon/dcerpc_netlogon.c

index 0dd215df6ce7b44ec2a793f81fcd71872fe6558f..c3e33bd42095ab6a2b542a6513db9bd92de14bb9 100644 (file)
@@ -268,9 +268,6 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       *r->out.rid = samdb_result_rid_from_sid(mem_ctx, msgs[0],
-                                               "objectSid", 0);
-
        mach_pwd = samdb_result_hash(mem_ctx, msgs[0], "unicodePwd");
        if (mach_pwd == NULL) {
                return NT_STATUS_ACCESS_DENIED;
@@ -300,8 +297,15 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca
        nt_status = schannel_save_creds_state(mem_ctx,
                                              dce_call->conn->dce_ctx->lp_ctx,
                                              creds);
+       if (!NT_STATUS_IS_OK(nt_status)) {
+               ZERO_STRUCTP(r->out.return_credentials);
+               return nt_status;
+       }
 
-       return nt_status;
+       *r->out.rid = samdb_result_rid_from_sid(mem_ctx, msgs[0],
+                                               "objectSid", 0);
+
+       return NT_STATUS_OK;
 }
 
 static NTSTATUS dcesrv_netr_ServerAuthenticate(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,