summaryrefslogtreecommitdiff
path: root/tests/misc/mktemp
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-08-13 20:53:12 +0200
committerJim Meyering <meyering@redhat.com>2008-08-14 14:37:37 +0200
commit22999697b81acf3e8683c95c310a36926e7af96f (patch)
treef1ef3a5e94aca978886adde6bc0aa4ce6553c1aa /tests/misc/mktemp
parent7e0019b168241b4edb79cc454d00dfc3344df8c7 (diff)
downloadcoreutils-22999697b81acf3e8683c95c310a36926e7af96f.tar.xz
mktemp, sort, tac: don't use undefined after mkstemp failure
When mkstemp fails, the template buffer may have undefined contents, so we must not print it. * src/sort.c (create_temp_file): Use temp_dir, not "file" when diagnosing failed mkstemp, because "file" may be undefined. * tests/misc/sort-merge: Adjust for new expected output. Jeph Cowan and Ralf Wildenhues reported the test failure: http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/14235/focus=14257 * src/tac.c (copy_to_temp): Don't use template buffer after failed mkstemp call, since its contents may be undefined. * tests/misc/tac (pipe-bad-tmpdir): New test for the above. * src/mktemp.c (main): Save a copy of the template string, solely for use in case mkstemp fails. * tests/misc/mktemp (pipe-bad-tmpdir): New test for the above.
Diffstat (limited to 'tests/misc/mktemp')
-rwxr-xr-xtests/misc/mktemp7
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/misc/mktemp b/tests/misc/mktemp
index 616a9e44f..356558291 100755
--- a/tests/misc/mktemp
+++ b/tests/misc/mktemp
@@ -49,6 +49,7 @@ sub check_tmp($$)
# Turn off localization of executable's output.
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
my $prog = 'mktemp';
+my $bad_dir = 'no/such/dir';
my @Tests =
(
@@ -97,6 +98,12 @@ my @Tests =
{POST => sub { my ($f) = @_; defined $f or return; chomp $f;
check_tmp $f, 'F'; unlink $f; rmdir 'a' or die "rmdir a: $!\n" }}
],
+
+ ['pipe-bad-tmpdir',
+ {ENV => "TMPDIR=$bad_dir"},
+ {ERR_SUBST => "s,($bad_dir/)[^']+': .*,\$1...,"},
+ {ERR => "$prog: failed to create file via template `$bad_dir/...\n"},
+ {EXIT => 1}],
);
my $save_temps = $ENV{DEBUG};