From: Andrew Bartlett Date: Mon, 23 Apr 2012 07:27:02 +0000 (+1000) Subject: s4-libnet Always return after composite_error() X-Git-Tag: samba-4.0.0alpha20~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f7666f97120a01e5bbbf335cf3effbddd2b5cd2;p=thirdparty%2Fsamba.git s4-libnet Always return after composite_error() This can and does cause crashes as multiple conflicting sets of callbacks run on memory that may have been destroyed. Andrew Bartlett --- diff --git a/source4/libnet/groupinfo.c b/source4/libnet/groupinfo.c index 932ab0ca9a7..0bc0d9f4b8c 100644 --- a/source4/libnet/groupinfo.c +++ b/source4/libnet/groupinfo.c @@ -93,6 +93,7 @@ static void continue_groupinfo_lookup(struct tevent_req *subreq) - we're looking for only one at the moment */ if (s->lookup.out.rids->count == 0) { composite_error(c, NT_STATUS_NO_SUCH_USER); + return; } /* TODO: find proper status code for more than one rid found */ diff --git a/source4/libnet/libnet_domain.c b/source4/libnet/libnet_domain.c index d2b96958eea..acd2ece7a98 100644 --- a/source4/libnet/libnet_domain.c +++ b/source4/libnet/libnet_domain.c @@ -1137,6 +1137,7 @@ static void continue_samr_close_handle(struct tevent_req *subreq) /* did everything go fine ? */ if (!NT_STATUS_IS_OK(s->samrclose.out.result)) { composite_error(c, s->samrclose.out.result); + return; } composite_done(c); diff --git a/source4/libnet/userinfo.c b/source4/libnet/userinfo.c index d485eecf5b4..ddb249ee96c 100644 --- a/source4/libnet/userinfo.c +++ b/source4/libnet/userinfo.c @@ -92,6 +92,7 @@ static void continue_userinfo_lookup(struct tevent_req *subreq) - we're looking for only one at the moment */ if (s->lookup.out.rids->count == 0) { composite_error(c, NT_STATUS_NO_SUCH_USER); + return; } /* TODO: find proper status code for more than one rid found */