s3-ntlmssp Add mem_ctx argument to auth_ntlmssp_get_session_key()
authorAndrew Bartlett <abartlet@samba.org>
Tue, 2 Aug 2011 00:24:28 +0000 (10:24 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 3 Aug 2011 08:48:02 +0000 (18:48 +1000)
source3/include/ntlmssp_wrap.h
source3/librpc/crypto/cli_spnego.c
source3/libsmb/ntlmssp_wrap.c
source3/rpc_client/cli_pipe.c

index 6924ea655f7b2efd21da80e716f38eceff6da477..ed2e82758c54247b9786895ee05884d4584f3cd9 100644 (file)
@@ -72,7 +72,8 @@ NTSTATUS auth_ntlmssp_set_password(struct auth_ntlmssp_state *ans,
 void auth_ntlmssp_and_flags(struct auth_ntlmssp_state *ans, uint32_t flags);
 void auth_ntlmssp_or_flags(struct auth_ntlmssp_state *ans, uint32_t flags);
 void auth_ntlmssp_want_feature(struct auth_ntlmssp_state *ans, uint32_t feature);
-DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans);
+DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans, 
+                                      TALLOC_CTX *mem_ctx);
 
 NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *ans,
                             const DATA_BLOB request, DATA_BLOB *reply);
index e4fdf315aafaee3c01a780bf92eb91f96f9e611c..f245484653055c12da1a95c45041124477ec2593 100644 (file)
@@ -340,9 +340,8 @@ DATA_BLOB spnego_get_session_key(TALLOC_CTX *mem_ctx,
                return gse_get_session_key(mem_ctx,
                                           sp_ctx->mech_ctx.gssapi_state);
        case SPNEGO_NTLMSSP:
-               sk = auth_ntlmssp_get_session_key(
-                                       sp_ctx->mech_ctx.ntlmssp_state);
-               return data_blob_dup_talloc(mem_ctx, &sk);
+               return auth_ntlmssp_get_session_key(
+                       sp_ctx->mech_ctx.ntlmssp_state, mem_ctx);
        default:
                DEBUG(0, ("Unsupported type in request!\n"));
                return data_blob_null;
index 00aede9ee9b5c1cd2477ea3bc126ae8618f6bd0c..de883dd8cb8b0eebcf080b7d2239e43538ca3649 100644 (file)
@@ -132,9 +132,9 @@ void auth_ntlmssp_want_feature(struct auth_ntlmssp_state *ans, uint32_t feature)
        ntlmssp_want_feature(ans->ntlmssp_state, feature);
 }
 
-DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans)
+DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans, TALLOC_CTX *mem_ctx)
 {
-       return ans->ntlmssp_state->session_key;
+       return data_blob_talloc(mem_ctx, ans->ntlmssp_state->session_key.data, ans->ntlmssp_state->session_key.length);
 }
 
 NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *ans,
index d71a10601962559b90ab0992a80d2a5d19dcb2a9..9d0abfc6127b1626707cc19651c28cdbac6e1519 100644 (file)
@@ -3287,8 +3287,8 @@ NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
        case DCERPC_AUTH_TYPE_NTLMSSP:
                ntlmssp_ctx = talloc_get_type_abort(a->auth_ctx,
                                                    struct auth_ntlmssp_state);
-               sk = auth_ntlmssp_get_session_key(ntlmssp_ctx);
-               make_dup = true;
+               sk = auth_ntlmssp_get_session_key(ntlmssp_ctx, mem_ctx);
+               make_dup = false;
                break;
        case DCERPC_AUTH_TYPE_KRB5:
                gse_ctx = talloc_get_type_abort(a->auth_ctx,