summaryrefslogtreecommitdiff
path: root/src/paste.c
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@stoeckmann.org>2014-11-24 09:14:44 +0000
committerPádraig Brady <P@draigBrady.com>2014-11-24 09:31:49 +0000
commit16e2347bd545057b04a97115563e606ad822ec33 (patch)
treed180631231f8877c253168b8f34288f208c3cc96 /src/paste.c
parent2e81e62243409c5c574b899f52b08c000e4d99fd (diff)
downloadcoreutils-16e2347bd545057b04a97115563e606ad822ec33.tar.xz
paste: fix possible truncated output with large files
If '\n' was present at the size_t boundary of a file, then that and subsequent data would be discarded. * src/paste.c (paste_parallel): Avoid the overflow issue by changing the flag to a boolean rather than a count. * NEWS: Mention the bug fix.
Diffstat (limited to 'src/paste.c')
-rw-r--r--src/paste.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/paste.c b/src/paste.c
index 2ca75d065..64c4783e0 100644
--- a/src/paste.c
+++ b/src/paste.c
@@ -235,7 +235,7 @@ paste_parallel (size_t nfiles, char **fnamptr)
{
int chr IF_LINT ( = 0); /* Input character. */
int err IF_LINT ( = 0); /* Input errno value. */
- size_t line_length = 0; /* Number of chars in line. */
+ bool sometodo = false; /* Input chars to process. */
if (fileptr[i])
{
@@ -250,7 +250,7 @@ paste_parallel (size_t nfiles, char **fnamptr)
while (chr != EOF)
{
- line_length++;
+ sometodo = true;
if (chr == '\n')
break;
xputchar (chr);
@@ -259,7 +259,7 @@ paste_parallel (size_t nfiles, char **fnamptr)
}
}
- if (line_length == 0)
+ if (! sometodo)
{
/* EOF, read error, or closed file.
If an EOF or error, close the file. */