aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-07-05 23:10:27 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-07-05 23:10:27 +0000
commit269215fe3e89d3718d2226ff4a48cfe14ad14c0d (patch)
tree2841757c7c8bb6c335376caecce0fd4646d48a56
parent0051bafbb419577f34eca341b92137a8a6774756 (diff)
downloadbusybox-w32-269215fe3e89d3718d2226ff4a48cfe14ad14c0d.tar.gz
busybox-w32-269215fe3e89d3718d2226ff4a48cfe14ad14c0d.tar.bz2
busybox-w32-269215fe3e89d3718d2226ff4a48cfe14ad14c0d.zip
Be certain to not abort prematurely when reading stuff from pipes.
git-svn-id: svn://busybox.net/trunk/busybox@7045 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--archival/libunarchive/archive_xread.c2
-rw-r--r--archival/libunarchive/init_handle.c2
-rw-r--r--archival/tar.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/archival/libunarchive/archive_xread.c b/archival/libunarchive/archive_xread.c
index 0b29dbfb9..d63d0d5a2 100644
--- a/archival/libunarchive/archive_xread.c
+++ b/archival/libunarchive/archive_xread.c
@@ -25,7 +25,7 @@ extern ssize_t archive_xread(const archive_handle_t *archive_handle, unsigned ch
25 ssize_t size; 25 ssize_t size;
26 26
27 size = archive_handle->read(archive_handle->src_fd, buf, count); 27 size = archive_handle->read(archive_handle->src_fd, buf, count);
28 if (size == -1) { 28 if (size < 0) {
29 bb_perror_msg_and_die("Read error"); 29 bb_perror_msg_and_die("Read error");
30 } 30 }
31 31
diff --git a/archival/libunarchive/init_handle.c b/archival/libunarchive/init_handle.c
index 4b0103491..2659aa3eb 100644
--- a/archival/libunarchive/init_handle.c
+++ b/archival/libunarchive/init_handle.c
@@ -30,7 +30,7 @@ archive_handle_t *init_handle(void)
30 archive_handle->action_header = header_skip; 30 archive_handle->action_header = header_skip;
31 archive_handle->action_data = data_skip; 31 archive_handle->action_data = data_skip;
32 archive_handle->filter = filter_accept_all; 32 archive_handle->filter = filter_accept_all;
33 archive_handle->read = read; 33 archive_handle->read = bb_full_read;
34 archive_handle->seek = seek_by_jump; 34 archive_handle->seek = seek_by_jump;
35 35
36 return(archive_handle); 36 return(archive_handle);
diff --git a/archival/tar.c b/archival/tar.c
index b6c2ef91e..93d5fbd45 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -526,7 +526,7 @@ static inline int writeTarFile(const char *tarName, const int verboseFlag,
526 while (1) { 526 while (1) {
527 char buf; 527 char buf;
528 528
529 int n = read(gzipStatusPipe[0], &buf, 1); 529 int n = bb_full_read(gzipStatusPipe[0], &buf, 1);
530 530
531 if (n == 0 && vfork_exec_errno != 0) { 531 if (n == 0 && vfork_exec_errno != 0) {
532 errno = vfork_exec_errno; 532 errno = vfork_exec_errno;