set FD_CLOEXEC on PL_perlio_debug_fd
authorZefram <zefram@fysh.org>
Wed, 20 Dec 2017 04:29:29 +0000 (04:29 +0000)
committerZefram <zefram@fysh.org>
Fri, 22 Dec 2017 16:34:10 +0000 (16:34 +0000)
There's clearly no intent for this to be inherited across exec.

perlio.c

index d9fdac3..fa9f54f 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -355,14 +355,14 @@ PerlIO_debug(const char *fmt, ...)
            PerlProc_getgid() == PerlProc_getegid()) {
            const char * const s = PerlEnv_getenv("PERLIO_DEBUG");
            if (s && *s)
-               PL_perlio_debug_fd
-                   = PerlLIO_open3(s, O_WRONLY | O_CREAT | O_APPEND, 0666);
+               PL_perlio_debug_fd = PerlLIO_open3_cloexec(s,
+                                       O_WRONLY | O_CREAT | O_APPEND, 0666);
            else
-               PL_perlio_debug_fd = PerlLIO_dup(2); /* stderr */
+               PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */
        } else {
            /* tainting or set*id, so ignore the environment and send the
                debug output to stderr, like other -D switches.  */
-           PL_perlio_debug_fd = PerlLIO_dup(2); /* stderr */
+           PL_perlio_debug_fd = PerlLIO_dup_cloexec(2); /* stderr */
        }
     }
     if (PL_perlio_debug_fd > 0) {