]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix handling a negative bytes_per_block values (#2206)
authorLukas Javorsky <ljavorsk@redhat.com>
Sun, 2 Jun 2024 23:50:22 +0000 (01:50 +0200)
committerGitHub <noreply@github.com>
Sun, 2 Jun 2024 23:50:22 +0000 (16:50 -0700)
Related issue: https://github.com/libarchive/libarchive/issues/2185

libarchive/archive_write.c

index b70bc785c738e64297369310a5dff38bc8cddf14..01c6843613b2f1c64474330edeaa7d2e21989b28 100644 (file)
@@ -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);
 }