From: Martin Matuska Date: Tue, 7 May 2019 13:10:13 +0000 (+0200) Subject: Fix incompatibility introduced by merging PR #1192 X-Git-Tag: v3.4.0~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=256c71ad4eee22a7dac2f13df1e20d85717cbdf6;p=thirdparty%2Flibarchive.git Fix incompatibility introduced by merging PR #1192 Makes test_archive_write_set_format_filter_by_ext_tar_gz pass on OmniOS. --- diff --git a/libarchive/archive_read_support_filter_gzip.c b/libarchive/archive_read_support_filter_gzip.c index a4443fc72..458b6f729 100644 --- a/libarchive/archive_read_support_filter_gzip.c +++ b/libarchive/archive_read_support_filter_gzip.c @@ -409,7 +409,7 @@ gzip_filter_read(struct archive_read_filter *self, const void **p) { struct private_data *state; size_t decompressed; - ssize_t avail_in; + ssize_t avail_in, max_in; int ret; state = (struct private_data *)self->data; @@ -443,8 +443,12 @@ gzip_filter_read(struct archive_read_filter *self, const void **p) "truncated gzip input"); return (ARCHIVE_FATAL); } - if (avail_in > (ssize_t)UINT_MAX) - avail_in = UINT_MAX; + if (UINT_MAX >= SSIZE_MAX) + max_in = SSIZE_MAX; + else + max_in = UINT_MAX; + if (avail_in > max_in) + avail_in = max_in; state->stream.avail_in = (uInt)avail_in; /* Decompress and consume some of that data. */