The branch, master has been updated via c01ee46 winbindd-irpc: Ensure not to call irpc_send_reply twice on error via 36ecbf3 libcli/auth: Ensure that the dns_names in/out parameter is preserved from 95d1828 waf: socket_wrapper should check for HAVE_FUNCTION_ATTRIBUTE_FORMAT.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c01ee4614a0fb9b017ca240e8929fe1da6268da4 Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jul 24 16:01:05 2014 +1200 winbindd-irpc: Ensure not to call irpc_send_reply twice on error As found during investigation of the previous commit, when the RPC call fails totally, we must only try and send one error reply. Andrew Bartlett Signed-off-by: Andrew Bartlett <abart...@samba.org> Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Reviewed-by: Stefan Metzmacher <me...@samba.org> Pair-programmed-with: Garming Sam <garm...@catalyst.net.nz> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Fri Aug 1 12:11:29 CEST 2014 on sn-devel-104 commit 36ecbf34ba7fd5d46118bd3403128155c47ea1fd Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jul 24 15:54:58 2014 +1200 libcli/auth: Ensure that the dns_names in/out parameter is preserved This is in dcerpc_netr_DsrUpdateReadOnlyServerDnsRecords, which has status variables filled in by the server and placed in this in/out array. This showed up as a segfault in winbindd during RODC DNS update. Andrew Bartlett Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> Pair-programmed-with: Garming Sam <garm...@catalyst.net.nz> ----------------------------------------------------------------------- Summary of changes: libcli/auth/netlogon_creds_cli.c | 9 ++++++++- source3/winbindd/winbindd_irpc.c | 1 + 2 files changed, 9 insertions(+), 1 deletions(-) Changeset truncated at 500 lines: diff --git a/libcli/auth/netlogon_creds_cli.c b/libcli/auth/netlogon_creds_cli.c index d709e6a..a461dc6 100644 --- a/libcli/auth/netlogon_creds_cli.c +++ b/libcli/auth/netlogon_creds_cli.c @@ -2754,7 +2754,14 @@ static void netlogon_creds_cli_DsrUpdateReadOnlyServerDnsRecords_done(struct tev NTSTATUS result; bool ok; - status = dcerpc_netr_DsrUpdateReadOnlyServerDnsRecords_recv(subreq, state, + /* + * We use state->dns_names as the memory context, as this is + * the only in/out variable and it has been overwritten by the + * out parameter from the server. + * + * We need to preserve the return value until the caller can use it. + */ + status = dcerpc_netr_DsrUpdateReadOnlyServerDnsRecords_recv(subreq, state->dns_names, &result); TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { diff --git a/source3/winbindd/winbindd_irpc.c b/source3/winbindd/winbindd_irpc.c index cf58a08..aeaea71 100644 --- a/source3/winbindd/winbindd_irpc.c +++ b/source3/winbindd/winbindd_irpc.c @@ -51,6 +51,7 @@ static void wb_irpc_forward_callback(struct tevent_req *subreq) DEBUG(0,("RPC callback failed for %s - %s\n", opname, nt_errstr(status))); irpc_send_reply(st->msg, status); + return; } irpc_send_reply(st->msg, status); -- Samba Shared Repository