From: Lukas Javorsky Date: Sun, 2 Jun 2024 23:50:22 +0000 (+0200) Subject: Fix handling a negative bytes_per_block values (#2206) X-Git-Tag: v3.7.5~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=575e2eab4bf04c9092fcf668d72e1b37fdbd5083;p=thirdparty%2Flibarchive.git Fix handling a negative bytes_per_block values (#2206) Related issue: https://github.com/libarchive/libarchive/issues/2185 --- diff --git a/libarchive/archive_write.c b/libarchive/archive_write.c index b70bc785c..01c684361 100644 --- a/libarchive/archive_write.c +++ b/libarchive/archive_write.c @@ -129,6 +129,10 @@ archive_write_new(void) int archive_write_set_bytes_per_block(struct archive *_a, int bytes_per_block) { + if (bytes_per_block < 0) { + // Do nothing if the bytes_per_block is negative + return 0; + } struct archive_write *a = (struct archive_write *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_NEW, "archive_write_set_bytes_per_block"); @@ -137,7 +141,7 @@ archive_write_set_bytes_per_block(struct archive *_a, int bytes_per_block) } /* - * Get the current block size. -1 if it has never been set. + * Get the current block size. */ int archive_write_get_bytes_per_block(struct archive *_a) @@ -145,6 +149,10 @@ archive_write_get_bytes_per_block(struct archive *_a) struct archive_write *a = (struct archive_write *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_ANY, "archive_write_get_bytes_per_block"); + if (a->bytes_per_block < 0) { + // Don't return a negative value + return 1; + } return (a->bytes_per_block); }