From e3393513c5f18e726795103f54b5ffd52a371638 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 5 Jul 2003 23:10:27 +0000 Subject: [PATCH] Be certain to not abort prematurely when reading stuff from pipes. --- archival/libunarchive/archive_xread.c | 2 +- archival/libunarchive/init_handle.c | 2 +- archival/tar.c | 2 +- 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 ssize_t size; size = archive_handle->read(archive_handle->src_fd, buf, count); - if (size == -1) { + if (size < 0) { bb_perror_msg_and_die("Read error"); } 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) archive_handle->action_header = header_skip; archive_handle->action_data = data_skip; archive_handle->filter = filter_accept_all; - archive_handle->read = read; + archive_handle->read = bb_full_read; archive_handle->seek = seek_by_jump; 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, while (1) { char buf; - int n = read(gzipStatusPipe[0], &buf, 1); + int n = bb_full_read(gzipStatusPipe[0], &buf, 1); if (n == 0 && vfork_exec_errno != 0) { errno = vfork_exec_errno; -- 2.25.1