mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-07-29 14:22:36 +00:00
Refuse to write archive contents to a tty.
* NEWS: Update. * src/buffer.c (_open_archive): Refuse to write to a tty. * tests/iotty.at: Test output to a tty.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
GNU tar NEWS - User visible changes. 2014-02-21
|
||||
GNU tar NEWS - User visible changes. 2014-03-27
|
||||
Please send GNU tar bug reports to <bug-tar@gnu.org>
|
||||
|
||||
|
||||
@@ -62,6 +62,8 @@ speed up archivation.
|
||||
are: CVS, Git, Bazaar, Mercurial.
|
||||
|
||||
|
||||
* Tar refuses to read input from and write output to a tty device.
|
||||
|
||||
* Manpages
|
||||
|
||||
This release includes official tar(1) and rmt(8) manpages.
|
||||
|
||||
+17
-10
@@ -668,6 +668,22 @@ init_buffer (void)
|
||||
record_end = record_start + blocking_factor;
|
||||
}
|
||||
|
||||
static void
|
||||
check_tty (enum access_mode mode)
|
||||
{
|
||||
/* Refuse to read archive from and write it to a tty. */
|
||||
if (strcmp (archive_name_array[0], "-") == 0
|
||||
&& isatty (mode == ACCESS_READ ? STDIN_FILENO : STDOUT_FILENO))
|
||||
{
|
||||
FATAL_ERROR ((0, 0,
|
||||
mode == ACCESS_READ
|
||||
? _("Refusing to read archive contents from terminal "
|
||||
"(missing -f option?)")
|
||||
: _("Refusing to write archive contents to terminal "
|
||||
"(missing -f option?)")));
|
||||
}
|
||||
}
|
||||
|
||||
/* Open an archive file. The argument specifies whether we are
|
||||
reading or writing, or both. */
|
||||
static void
|
||||
@@ -688,17 +704,8 @@ _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;
|
||||
check_tty (access_mode);
|
||||
|
||||
/* 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;
|
||||
|
||||
@@ -33,6 +33,8 @@ ttyemu -t5 -i/dev/null tar -x
|
||||
echo $?
|
||||
ttyemu -t5 -i/dev/null tar -xz
|
||||
echo $?
|
||||
ttyemu -t5 -i/dev/null tar -c .
|
||||
echo $?
|
||||
],
|
||||
[0],
|
||||
[tar: Refusing to read archive contents from terminal (missing -f option?)
|
||||
@@ -41,6 +43,9 @@ tar: Error is not recoverable: exiting now
|
||||
tar: Refusing to read archive contents from terminal (missing -f option?)
|
||||
tar: Error is not recoverable: exiting now
|
||||
2
|
||||
tar: Refusing to write archive contents to terminal (missing -f option?)
|
||||
tar: Error is not recoverable: exiting now
|
||||
2
|
||||
],
|
||||
[],[],[],[posix, gnu, oldgnu])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user