From c768e2231b89901a2e29c3bf96c027b64f8646d9 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 5 Nov 2009 12:19:45 -0700 Subject: mktemp: fix bug with -q and closed stdout If stdin or stdout is closed, then freopen(,stderr) can violate the premise that STDERR_FILENO==fileno(stderr), which in turn breaks mktemp -q. * bootstrap.conf (gnulib_modules): Add freopen-safer. * src/mktemp.c (includes): Use stdio--.h. * tests/misc/close-stdout: Enhance test to catch bug. --- tests/misc/close-stdout | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/misc/close-stdout b/tests/misc/close-stdout index 852c3c822..ae2350dce 100755 --- a/tests/misc/close-stdout +++ b/tests/misc/close-stdout @@ -52,7 +52,8 @@ if "$p/src/test" -w /dev/stdout >/dev/null && cp --verbose a b >&- 2>/dev/null && fail=1 rm -Rf tmpfile-?????? || fail=1 mktemp tmpfile-XXXXXX >&- 2>/dev/null && fail=1 - test -e tmpfile-?????? && fail=1 + mktemp tmpfile-XXXXXX -q >&- 2>/dev/null && fail=1 + case `echo tmpfile-??????` in 'tmpfile-??????') ;; *) fail=1 ;; esac fi # Likewise for /dev/full, if /dev/full works. @@ -61,7 +62,8 @@ if test -w /dev/full && test -c /dev/full; then cp --verbose a b >/dev/full 2>/dev/null && fail=1 rm -Rf tmpdir-?????? || fail=1 mktemp -d tmpdir-XXXXXX >/dev/full 2>/dev/null && fail=1 - test -e tmpdir-?????? && fail=1 + mktemp -d -q tmpdir-XXXXXX >/dev/full 2>/dev/null && fail=1 + case `echo tmpfile-??????` in 'tmpfile-??????') ;; *) fail=1 ;; esac fi Exit $fail -- cgit v1.2.3-54-g00ecf