s3:ntlmssp Adapt Samba3 to new shared NTLMSSP code
[abartlet/samba.git/.git] / source3 / utils / ntlm_auth.c
index c68f3542fc2d9e11ade47d95b371dde28799815d..d8857209e1f637c971324c76644ac0dd0fa5b518 100644 (file)
@@ -584,13 +584,13 @@ static NTSTATUS winbind_pw_check(struct ntlmssp_state *ntlmssp_state,
 
        if (NT_STATUS_IS_OK(nt_status)) {
                if (memcmp(lm_key, zeros, 8) != 0) {
-                       *lm_session_key = data_blob_talloc(ntlmssp_state, NULL, 16);
+                       *lm_session_key = data_blob_talloc(mem_ctx, NULL, 16);
                        memcpy(lm_session_key->data, lm_key, 8);
                        memset(lm_session_key->data+8, '\0', 8);
                }
                
                if (memcmp(user_sess_key, zeros, 16) != 0) {
-                       *user_session_key = data_blob_talloc(ntlmssp_state, user_sess_key, 16);
+                       *user_session_key = data_blob_talloc(mem_ctx, user_sess_key, 16);
                }
                ntlmssp_state->auth_context = talloc_strdup(ntlmssp_state,
                                                            unix_name);
@@ -633,12 +633,20 @@ static NTSTATUS local_pw_check(struct ntlmssp_state *ntlmssp_state,
                                                              "%s%c%s", ntlmssp_state->domain, 
                                                              *lp_winbind_separator(), 
                                                              ntlmssp_state->user);
+               if (user_session_key) {
+                       talloc_steal(mem_ctx, user_session_key->data);
+               }
+               if (lm_session_key) {
+                       talloc_steal(mem_ctx, lm_session_key->data);
+               }
        } else {
                DEBUG(3, ("Login for user [%s]\\[%s]@[%s] failed due to [%s]\n", 
                          ntlmssp_state->domain, ntlmssp_state->user, ntlmssp_state->workstation, 
                          nt_errstr(nt_status)));
                ntlmssp_state->auth_context = NULL;
        }
+
+
        return nt_status;
 }