From 35b309fa0cac9341f364243b03ebfcc80f74198e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 1 Aug 2011 15:39:01 +1000 Subject: gensec: clarify memory ownership for gensec_session_info() and gensec_session_key() This is slightly less efficient, because we no longer keep a cache on the gensec structures, but much clearer in terms of memory ownership. Both gensec_session_info() and gensec_session_key() now take a mem_ctx and put the result only on that context. Some duplication of memory in the callers (who were rightly uncertain about who was the rightful owner of the returned memory) has been removed to compensate for the internal copy. Andrew Bartlett --- source4/torture/drs/rpc/dssync.c | 2 +- source4/torture/drs/rpc/msds_intid.c | 2 +- source4/torture/rpc/remote_pac.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/torture') diff --git a/source4/torture/drs/rpc/dssync.c b/source4/torture/drs/rpc/dssync.c index 8279e736b1..7149da4a85 100644 --- a/source4/torture/drs/rpc/dssync.c +++ b/source4/torture/drs/rpc/dssync.c @@ -678,7 +678,7 @@ static bool test_GetNCChanges(struct torture_context *tctx, } } status = gensec_session_key(ctx->new_dc.drsuapi.drs_pipe->conn->security_state.generic_state, - &gensec_skey); + ctx, &gensec_skey); if (!NT_STATUS_IS_OK(status)) { printf("failed to get gensec session key: %s\n", nt_errstr(status)); return false; diff --git a/source4/torture/drs/rpc/msds_intid.c b/source4/torture/drs/rpc/msds_intid.c index 14c6454abe..c866c2181b 100644 --- a/source4/torture/drs/rpc/msds_intid.c +++ b/source4/torture/drs/rpc/msds_intid.c @@ -185,7 +185,7 @@ static bool _test_DsaBind(struct torture_context *tctx, bi->drs_handle = bi->drs_pipe->binding_handle; status = gensec_session_key(bi->drs_pipe->conn->security_state.generic_state, - &bi->gensec_skey); + mem_ctx, &bi->gensec_skey); torture_assert_ntstatus_ok(tctx, status, "failed to get gensec session key"); /* Bind to DRSUAPI interface */ diff --git a/source4/torture/rpc/remote_pac.c b/source4/torture/rpc/remote_pac.c index 37fb8af147..88a40b4fe4 100644 --- a/source4/torture/rpc/remote_pac.c +++ b/source4/torture/rpc/remote_pac.c @@ -129,7 +129,7 @@ static bool test_PACVerify(struct torture_context *tctx, /* Extract the PAC using Samba's code */ - status = gensec_session_info(gensec_server_context, &session_info); + status = gensec_session_info(gensec_server_context, gensec_server_context, &session_info); torture_assert_ntstatus_ok(tctx, status, "gensec_session_info failed"); torture_assert(tctx, session_info->torture != NULL, "gensec_session_info failed to fill in torture sub struct"); torture_assert(tctx, session_info->torture->pac_srv_sig != NULL, "pac_srv_sig not present"); @@ -468,7 +468,7 @@ static bool test_S2U4Self(struct torture_context *tctx, /* Extract the PAC using Samba's code */ - status = gensec_session_info(gensec_server_context, &kinit_session_info); + status = gensec_session_info(gensec_server_context, gensec_server_context, &kinit_session_info); torture_assert_ntstatus_ok(tctx, status, "gensec_session_info failed"); @@ -530,7 +530,7 @@ static bool test_S2U4Self(struct torture_context *tctx, /* Extract the PAC using Samba's code */ - status = gensec_session_info(gensec_server_context, &s2u4self_session_info); + status = gensec_session_info(gensec_server_context, gensec_server_context, &s2u4self_session_info); torture_assert_ntstatus_ok(tctx, status, "gensec_session_info failed"); cli_credentials_get_ntlm_username_domain(cmdline_credentials, tctx, -- cgit