[JOBS] Do not close stderr when /dev/tty fails to open

As it stands if we fail to open /dev/tty we end up closing stderr
after saving it at a higher fd.

Thanks to David van Gorkom for reporting this.

Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>

diff --git a/ChangeLog b/ChangeLog
index d87e5d4..dcb7182 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 
        * Fix dowait signal race.
        * Remove EXSIG.
+       * Do not close stderr when /dev/tty fails to open.
 
 2009-01-14  Herbert Xu <herb...@gondor.apana.org.au>
 
diff --git a/src/jobs.c b/src/jobs.c
index 69a84f7..b1ab7ab 100644
--- a/src/jobs.c
+++ b/src/jobs.c
@@ -195,6 +195,9 @@ setjobctl(int on)
                        while (!isatty(fd))
                                if (--fd < 0)
                                        goto out;
+                       fd = dup(fd);
+                       if (fd < 0)
+                               goto out;
                }
                fd = savefd(fd);
                do { /* while we are in the background */
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to