]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
debug: Set close-on-exec for the main log file FD
authorAndrew Bartlett <abartlet@samba.org>
Mon, 16 Feb 2015 02:59:11 +0000 (15:59 +1300)
committerKarolin Seeger <kseeger@samba.org>
Wed, 25 Feb 2015 19:05:09 +0000 (20:05 +0100)
This does not change the properties of dup2() of the fd as STDERR, however this is closed
before we start smbd or winbindd as child processes.

This is needed otherwise the logfile remains open in the child process, and
logfile rotation can mean this old log remains on disk indefinatly.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11100
Pair-programmed-with: Garming Sam <garming@catalyst.net.nz>
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Mon Feb 16 11:42:47 CET 2015 on sn-devel-104

(based on commit 1d95b0afc3547a91f8558873ce58652c271ed9eb)

lib/util/debug.c

index a46b2753cfcae437179a51b98cca6aef91bf0264..cf42d366b299297ea4380c600bc2216d7755159b 100644 (file)
@@ -596,6 +596,7 @@ bool reopen_logs_internal(void)
                log_overflow = false;
                ret = false;
        } else {
+               smb_set_close_on_exec(new_fd);
                old_fd = state.fd;
                state.fd = new_fd;
                debug_close_fd(old_fd);
@@ -729,6 +730,7 @@ void check_log_size( void )
                 */
                int fd = open( "/dev/console", O_WRONLY, 0);
                if (fd != -1) {
+                       smb_set_close_on_exec(fd);
                        state.fd = fd;
                        DEBUG(0,("check_log_size: open of debug file %s failed - using console.\n",
                                        state.debugf ));
@@ -791,6 +793,7 @@ void check_log_size( void )
                                errno = old_errno;
                                goto done;
                        }
+                       smb_set_close_on_exec(fd);
                        state.fd = fd;
                }
        }