X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fbuffer.c;h=248dd8804ce69e976b2187ba34bbc04b354b1fa9;hb=b0902369e789c9aadf584799889a34637688d601;hp=4cfcb0eef72516c440ec4e00fcc98302acff3e96;hpb=eb7e2aa9334d80747c6f6c4f093716fd030f3f15;p=chaz%2Ftar diff --git a/src/buffer.c b/src/buffer.c index 4cfcb0e..248dd88 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1,7 +1,7 @@ /* Buffer management for tar. - Copyright 1988, 1992-1994, 1996-1997, 1999-2010, 2013 Free Software - Foundation, Inc. + Copyright 1988, 1992-1994, 1996-1997, 1999-2010, 2013-2014 Free + Software Foundation, Inc. This file is part of GNU tar. @@ -689,6 +689,16 @@ _open_archive (enum access_mode wanted_access) /* When updating the archive, we start with reading. */ access_mode = wanted_access == ACCESS_UPDATE ? ACCESS_READ : wanted_access; + /* Refuse to read archive from a tty. + Do not fail if the tar's output goes directly to tty because such + behavior would go against GNU Coding Standards: + http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00042.html */ + if (strcmp (archive_name_array[0], "-") == 0 + && wanted_access == ACCESS_READ && isatty (STDIN_FILENO)) + FATAL_ERROR ((0, 0, + _("Refusing to read archive contents from terminal " + "(missing -f option?)"))); + read_full_records = read_full_records_option; records_read = 0; @@ -731,7 +741,6 @@ _open_archive (enum access_mode wanted_access) enum compress_type type; archive = STDIN_FILENO; - type = check_compressed_archive (&shortfile); if (type != ct_tar && type != ct_none) FATAL_ERROR ((0, 0,