[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Wed Dec 12 17:02:02 MST 2012


The branch, master has been updated
       via  229d934 s4-libnet: Fix setting the group handle and return codes.
       via  bdc2f4b util: Remove unused fde_stdin in samba_runcmd.
       via  74fb61d s3-lib: Don't close the listener twice if we goto failed.
      from  a44e58a s3: Fix a typo in a debug message

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 229d934d2fb653e02b38d242bf01f199434cd1f3
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 6 14:45:24 2012 +0100

    s4-libnet: Fix setting the group handle and return codes.
    
    Found by Coverity.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>
    
    Autobuild-User(master): Günther Deschner <gd at samba.org>
    Autobuild-Date(master): Thu Dec 13 01:01:14 CET 2012 on sn-devel-104

commit bdc2f4bd91c3eb0ce0fa87d2d21668e064b106b6
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 12 19:15:58 2012 +0100

    util: Remove unused fde_stdin in samba_runcmd.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>

commit 74fb61d496348391a324fc69bb7b167597939d5b
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 6 11:11:15 2012 +0100

    s3-lib: Don't close the listener twice if we goto failed.
    
    Found by Coverity.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/util/util_runcmd.c    |   27 +++++----------------------
 source3/lib/sock_exec.c   |    2 +-
 source4/libnet/groupman.c |   13 +++++++++----
 3 files changed, 15 insertions(+), 27 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/util_runcmd.c b/lib/util/util_runcmd.c
index cc274c2..bc5cc10 100644
--- a/lib/util/util_runcmd.c
+++ b/lib/util/util_runcmd.c
@@ -33,7 +33,6 @@
 struct samba_runcmd_state {
 	int stdout_log_level;
 	int stderr_log_level;
-	struct tevent_fd *fde_stdin;
 	struct tevent_fd *fde_stdout;
 	struct tevent_fd *fde_stderr;
 	int fd_stdin, fd_stdout, fd_stderr;
@@ -50,6 +49,10 @@ static int samba_runcmd_state_destructor(struct samba_runcmd_state *state)
 		waitpid(state->pid, NULL, 0);
 		state->pid = -1;
 	}
+
+	if (state->fd_stdin != -1) {
+		close(state->fd_stdin);
+	}
 	return 0;
 }
 
@@ -85,6 +88,7 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx,
 
 	state->stdout_log_level = stdout_log_level;
 	state->stderr_log_level = stderr_log_level;
+	state->fd_stdin = -1;
 
 	state->arg0 = talloc_strdup(state, argv0[0]);
 	if (tevent_req_nomem(state->arg0, req)) {
@@ -149,7 +153,6 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx,
 		if (tevent_req_nomem(state->fde_stdout, req)) {
 			close(state->fd_stdout);
 			close(state->fd_stderr);
-			close(state->fd_stdin);
 			return tevent_req_post(req, ev);
 		}
 		tevent_fd_set_auto_close(state->fde_stdout);
@@ -161,22 +164,10 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx,
 						  req);
 		if (tevent_req_nomem(state->fde_stdout, req)) {
 			close(state->fd_stderr);
-			close(state->fd_stdin);
 			return tevent_req_post(req, ev);
 		}
 		tevent_fd_set_auto_close(state->fde_stderr);
 
-		state->fde_stdin = tevent_add_fd(ev, state,
-						 state->fd_stdin,
-						 0,
-						 samba_runcmd_io_handler,
-						 req);
-		if (tevent_req_nomem(state->fde_stdin, req)) {
-			close(state->fd_stdin);
-			return tevent_req_post(req, ev);
-		}
-		tevent_fd_set_auto_close(state->fde_stdin);
-
 		if (!timeval_is_zero(&endtime)) {
 			tevent_req_set_endtime(req, ev, endtime);
 		}
@@ -251,14 +242,6 @@ static void samba_runcmd_io_handler(struct tevent_context *ev,
 	} else if (fde == state->fde_stderr) {
 		level = state->stderr_log_level;
 		fd = state->fd_stderr;
-	} else if (fde == state->fde_stdin) {
-		char c;
-		if (read(state->fd_stdin, &c, 1) != 1) {
-			/* the child has closed its stdin */
-			talloc_free(fde);
-			state->fde_stdin = NULL;
-			return;
-		}
 	} else {
 		return;
 	}
diff --git a/source3/lib/sock_exec.c b/source3/lib/sock_exec.c
index 403b38b..3d2ace9 100644
--- a/source3/lib/sock_exec.c
+++ b/source3/lib/sock_exec.c
@@ -68,11 +68,11 @@ static int socketpair_tcp(int fd[2])
 
 	if ((fd[0] = accept(listener, (struct sockaddr *)&sock, &socklen)) == -1) goto failed;
 
-	close(listener);
 	if (connect_done == 0) {
 		if (connect(fd[1], (struct sockaddr *)&sock, socklen) != 0
 		    && errno != EISCONN) goto failed;
 	}
+	close(listener);
 
 	set_blocking(fd[1], 1);
 
diff --git a/source4/libnet/groupman.c b/source4/libnet/groupman.c
index 97236bd..9771ea5 100644
--- a/source4/libnet/groupman.c
+++ b/source4/libnet/groupman.c
@@ -94,10 +94,12 @@ NTSTATUS libnet_rpc_groupadd_recv(struct composite_context *c, TALLOC_CTX *mem_c
 	struct groupadd_state *s;
 	
 	status = composite_wait(c);
-	if (NT_STATUS_IS_OK(status)) {
-		s = talloc_get_type(c, struct groupadd_state);
+	if (NT_STATUS_IS_OK(status) && io) {
+		s = talloc_get_type(c->private_data, struct groupadd_state);
+		io->out.group_handle = s->group_handle;
 	}
 
+	talloc_free(c);
 	return status;
 }
 
@@ -115,8 +117,11 @@ static void continue_groupadd_created(struct tevent_req *subreq)
 	if (!composite_is_ok(c)) return;
 
 	c->status = s->creategroup.out.result;
-	if (!composite_is_ok(c)) return;
-	
+	if (!NT_STATUS_IS_OK(c->status)) {
+		composite_error(c, c->status);
+		return;
+	}
+
 	composite_done(c);
 }
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list