ctdb-daemon: Fix CID 1125627 Resource leak (RESOURCE_LEAK)
authorMartin Schwenke <martin@meltin.net>
Fri, 5 Aug 2016 06:50:58 +0000 (16:50 +1000)
committerKarolin Seeger <kseeger@samba.org>
Wed, 10 Aug 2016 07:03:26 +0000 (09:03 +0200)
Also fixes CID 1125628.

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

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

ctdb/server/ctdb_logging.c

index 1819ab7d98cdb8c94e9922bbd4fd9314e07b4627..b19aad7f6dd270d58919ddb017ce18d11efcbde6 100644 (file)
@@ -281,9 +281,14 @@ int ctdb_set_child_logging(struct ctdb_context *ctdb)
 
        /* We'll fail if stderr/stdout not already open; it's simpler. */
        old_stdout = dup(STDOUT_FILENO);
+       if (old_stdout < 0) {
+               DEBUG(DEBUG_ERR, ("Failed to dup stdout for child logging\n"));
+               return -1;
+       }
        old_stderr = dup(STDERR_FILENO);
-       if (old_stdout < 0 || old_stderr < 0) {
-               DEBUG(DEBUG_ERR, ("Failed to dup stdout/stderr for child logging\n"));
+       if (old_stderr < 0) {
+               DEBUG(DEBUG_ERR, ("Failed to dup stderr for child logging\n"));
+               close(old_stdout);
                return -1;
        }
        if (dup2(p[1], STDOUT_FILENO) < 0 || dup2(p[1], STDERR_FILENO) < 0) {