diff options
author | kientzle <kientzle@FreeBSD.org> | 2005-01-25 16:55:28 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2005-01-25 16:55:28 +0000 |
commit | 634c300ead715444e79651876685007e233412f0 (patch) | |
tree | 98bf151940b474d024b82749e3026b94fc74e778 | |
parent | b28fe2715d14eeace82992567eab9c32fe4bdff7 (diff) | |
download | FreeBSD-src-634c300ead715444e79651876685007e233412f0.zip FreeBSD-src-634c300ead715444e79651876685007e233412f0.tar.gz |
Fix some signed/unsigned mismatches.
Reported by: tinderbox
Pointy hat: me
-rw-r--r-- | lib/libarchive/archive_read_support_format_zip.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/lib/libarchive/archive_read_support_format_zip.c b/lib/libarchive/archive_read_support_format_zip.c index 8c2cdc7..d1b48a6 100644 --- a/lib/libarchive/archive_read_support_format_zip.c +++ b/lib/libarchive/archive_read_support_format_zip.c @@ -336,6 +336,7 @@ zip_read_data_none(struct archive *a, const void **buff, size_t *size, off_t *offset) { struct zip *zip; + ssize_t bytes_read; zip = *(a->pformat_data); @@ -346,16 +347,17 @@ zip_read_data_none(struct archive *a, const void **buff, return (ARCHIVE_EOF); } - *size = (a->compression_read_ahead)(a, buff, + bytes_read = (a->compression_read_ahead)(a, buff, zip->entry_bytes_remaining); - if (*size <= 0) { + if (bytes_read <= 0) { archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT, "Truncated ZIP file data"); return (ARCHIVE_FATAL); } - if (*size > zip->entry_bytes_remaining) - *size = zip->entry_bytes_remaining; - (a->compression_read_consume)(a, *size); + if (bytes_read > zip->entry_bytes_remaining) + bytes_read = zip->entry_bytes_remaining; + (a->compression_read_consume)(a, bytes_read); + *size = bytes_read; *offset = zip->entry_offset; zip->entry_offset += *size; zip->entry_bytes_remaining -= *size; @@ -469,6 +471,7 @@ zip_read_data_skip(struct archive *a, const void **buff, size_t *size, off_t *offset) { struct zip *zip; + ssize_t bytes_read; zip = *(a->pformat_data); @@ -480,18 +483,17 @@ zip_read_data_skip(struct archive *a, const void **buff, /* Skip body of entry. */ while (zip->entry_bytes_remaining > 0) { - *size = (a->compression_read_ahead)(a, buff, + bytes_read = (a->compression_read_ahead)(a, buff, zip->entry_bytes_remaining); - if (*size <= 0) { + if (bytes_read <= 0) { archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT, "Truncated ZIP file body"); return (ARCHIVE_FATAL); } - if (*size > zip->entry_bytes_remaining) - *size = zip->entry_bytes_remaining; - (a->compression_read_consume)(a, *size); - zip->entry_bytes_remaining -= *size; - zip->entry_offset += *size; + if (bytes_read > zip->entry_bytes_remaining) + bytes_read = zip->entry_bytes_remaining; + (a->compression_read_consume)(a, bytes_read); + zip->entry_bytes_remaining -= bytes_read; } return (ARCHIVE_OK); } |