]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
archive_read.c: silence UBSan warning about undefined behavior
authorKamil Rytarowski <n54@gmx.com>
Mon, 24 Feb 2020 21:58:00 +0000 (22:58 +0100)
committerMartin Matuska <martin@matuska.org>
Tue, 25 Feb 2020 01:52:16 +0000 (02:52 +0100)
Fixes #1335

libarchive/archive_read.c

index 4a933b2fc084dc2ac71b4cf9a5d893f3321ea52e..c59f05153491fb3305d1af34da8933cd15f83051 100644 (file)
@@ -892,15 +892,16 @@ archive_read_data(struct archive *_a, void *buff, size_t s)
                        len = a->read_data_remaining;
                        if (len > s)
                                len = s;
-                       if (len)
+                       if (len) {
                                memcpy(dest, a->read_data_block, len);
-                       s -= len;
-                       a->read_data_block += len;
-                       a->read_data_remaining -= len;
-                       a->read_data_output_offset += len;
-                       a->read_data_offset += len;
-                       dest += len;
-                       bytes_read += len;
+                               s -= len;
+                               a->read_data_block += len;
+                               a->read_data_remaining -= len;
+                               a->read_data_output_offset += len;
+                               a->read_data_offset += len;
+                               dest += len;
+                               bytes_read += len;
+                       }
                }
        }
        a->read_data_is_posix_read = 0;