diff options
author | Tobias Stoeckmann <tobias@stoeckmann.org> | 2014-11-24 09:14:44 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2014-11-24 09:31:49 +0000 |
commit | 16e2347bd545057b04a97115563e606ad822ec33 (patch) | |
tree | d180631231f8877c253168b8f34288f208c3cc96 /src | |
parent | 2e81e62243409c5c574b899f52b08c000e4d99fd (diff) | |
download | coreutils-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')
-rw-r--r-- | src/paste.c | 6 |
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. */ |