From 575e2eab4bf04c9092fcf668d72e1b37fdbd5083 Mon Sep 17 00:00:00 2001 From: Lukas Javorsky Date: Mon, 3 Jun 2024 01:50:22 +0200 Subject: [PATCH] Fix handling a negative bytes_per_block values (#2206) Related issue: https://github.com/libarchive/libarchive/issues/2185 --- libarchive/archive_write.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); } -- 2.47.2