diff options
author | Stefan Metzmacher <metze@samba.org> | 2018-05-11 06:43:14 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-05-14 09:58:07 +0200 |
commit | 060a04793c3c5cdc902d71619a2ba32fab0bc7c3 (patch) | |
tree | ab1496944aaed76d8f892162f79d19ec71d9b8a0 /source4 | |
parent | 234216c1e02dd45d35179235dcef57948b63abfd (diff) | |
download | samba-060a04793c3c5cdc902d71619a2ba32fab0bc7c3.tar.gz |
s4:lsa_lookup: remove TALLOC_FREE(state) after all dcesrv_lsa_Lookup{Names,Sids}_base_map() calls
This completes the regression fix of commit 7e091e505156381e385235ab4518b4d133a98497.
There might be strings allocated on state, which are part of the
result.
The reason for the TALLOC_FREE(state) was to cleanup the possible
irpc_handle before leaving the function. Now we call
TALLOC_FREE(state->wb.irpc_handle) explicitly in
dcesrv_lsa_Lookup{Names,Sids}_base_done() instead.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13420
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sun May 13 10:27:28 CEST 2018 on sn-devel-144
(cherry picked from commit 9a513304adadd79d1c63d55fcf06b67ed45d43ba)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/rpc_server/lsa/lsa_lookup.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/source4/rpc_server/lsa/lsa_lookup.c b/source4/rpc_server/lsa/lsa_lookup.c index 1b6a7d2e5a7..e55539cf7b2 100644 --- a/source4/rpc_server/lsa/lsa_lookup.c +++ b/source4/rpc_server/lsa/lsa_lookup.c @@ -533,6 +533,7 @@ static void dcesrv_lsa_LookupSids_base_done(struct tevent_req *subreq) status = dcerpc_lsa_LookupSids3_recv(subreq, state->mem_ctx, &state->wb.result); TALLOC_FREE(subreq); + TALLOC_FREE(state->wb.irpc_handle); if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) { DEBUG(0,(__location__ ": IRPC callback failed %s\n", nt_errstr(status))); @@ -598,7 +599,6 @@ static void dcesrv_lsa_LookupSids_base_done(struct tevent_req *subreq) finished: state->r.out.result = status; dcesrv_lsa_LookupSids_base_map(state); - TALLOC_FREE(state); status = dcesrv_reply(dce_call); if (!NT_STATUS_IS_OK(status)) { @@ -660,7 +660,6 @@ NTSTATUS dcesrv_lsa_LookupSids2(struct dcesrv_call_state *dce_call, state->r.out.result = status; dcesrv_lsa_LookupSids_base_map(state); - TALLOC_FREE(state); return status; } @@ -734,7 +733,6 @@ NTSTATUS dcesrv_lsa_LookupSids3(struct dcesrv_call_state *dce_call, state->r.out.result = status; dcesrv_lsa_LookupSids_base_map(state); - TALLOC_FREE(state); return status; } @@ -1155,6 +1153,7 @@ static void dcesrv_lsa_LookupNames_base_done(struct tevent_req *subreq) status = dcerpc_lsa_LookupNames4_recv(subreq, state->mem_ctx, &state->wb.result); TALLOC_FREE(subreq); + TALLOC_FREE(state->wb.irpc_handle); if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) { DEBUG(0,(__location__ ": IRPC callback failed %s\n", nt_errstr(status))); @@ -1220,7 +1219,6 @@ static void dcesrv_lsa_LookupNames_base_done(struct tevent_req *subreq) finished: state->r.out.result = status; dcesrv_lsa_LookupNames_base_map(state); - TALLOC_FREE(state); status = dcesrv_reply(dce_call); if (!NT_STATUS_IS_OK(status)) { @@ -1433,7 +1431,6 @@ NTSTATUS dcesrv_lsa_LookupNames2(struct dcesrv_call_state *dce_call, state->r.out.result = status; dcesrv_lsa_LookupNames_base_map(state); - TALLOC_FREE(state); return status; } @@ -1504,7 +1501,6 @@ NTSTATUS dcesrv_lsa_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX * state->r.out.result = status; dcesrv_lsa_LookupNames_base_map(state); - TALLOC_FREE(state); return status; } |