From f3f9062ecfb6893ca55094861c0a5e9f5ddba607 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 18 Dec 2001 00:57:55 +0000 Subject: Things like 'tar -c /tmp/*' and 'tar -cO /tmp/*' where the output filename was not explicitly specified were segfaulting. -Erik --- archival/tar.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'archival') diff --git a/archival/tar.c b/archival/tar.c index 5f3f56784..9792f6b9d 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -459,7 +459,7 @@ static int writeTarFile(const char* tarName, int verboseFlag, char **argv, error_msg_and_die("Cowardly refusing to create an empty archive"); /* Open the tar file for writing. */ - if (!strcmp(tarName, "-")) + if (tarName == NULL || !strcmp(tarName, "-")) tbInfo.tarFd = fileno(stdout); else tbInfo.tarFd = open (tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); @@ -694,6 +694,10 @@ int tar_main(int argc, char **argv) optind++; } + if (src_filename == NULL) { + extract_function |= extract_to_stdout; + } + if (extract_function & (extract_list | extract_all_to_fs)) { if (dst_prefix == NULL) { dst_prefix = xstrdup("./"); -- cgit v1.2.3