]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-daemon: Open eventd pipe earlier
authorMartin Schwenke <martin@meltin.net>
Mon, 27 Aug 2018 04:44:24 +0000 (14:44 +1000)
committerStefan Metzmacher <metze@samba.org>
Wed, 5 Sep 2018 11:31:40 +0000 (13:31 +0200)
The pipe will soon be needed earlier, so initialise it earlier.
Ensure the file descriptors are closed on error.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13592

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit c446ae5e1382d5e32c33ce92243daf6b4338e15a)

ctdb/server/eventscript.c

index 74f132c0e80cb31a4d9ac727afc638c02a38d5a0..02924a7f4717f4783995f45ff1af0050331f00f7 100644 (file)
@@ -175,8 +175,15 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
                return -1;
        }
 
+       ret = pipe(fd);
+       if (ret != 0) {
+               return -1;
+       }
+
        argv = talloc_array(ectx, const char *, 14);
        if (argv == NULL) {
+               close(fd[0]);
+               close(fd[1]);
                return -1;
        }
 
@@ -201,6 +208,8 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
        argv[13] = NULL;
 
        if (argv[6] == NULL) {
+               close(fd[0]);
+               close(fd[1]);
                talloc_free(argv);
                return -1;
        }
@@ -210,11 +219,6 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
               argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
               argv[6], argv[7], argv[8], argv[9], argv[10]));
 
-       ret = pipe(fd);
-       if (ret != 0) {
-               return -1;
-       }
-
        pid = ctdb_fork(ctdb);
        if (pid == -1) {
                close(fd[0]);