Module Name:    src
Committed By:   kamil
Date:           Tue Feb 25 09:01:25 UTC 2020

Modified Files:
        src/external/bsd/libarchive/dist/libarchive: archive_read.c

Log Message:
Avoid NULL pointer arithmetic

Cherry-pick upstream patch:

>From ec5b86b48e99c5501374b01606f1ccdae6a8a93e Mon Sep 17 00:00:00 2001
From: Kamil Rytarowski <n...@gmx.com>
Date: Mon, 24 Feb 2020 22:58:00 +0100
Subject: [PATCH] archive_read.c: silence UBSan warning about undefined
 behavior

Fixes #1335

https://github.com/libarchive/libarchive/commit/ec5b86b48e99c5501374b01606f1ccdae6a8a93e.patch


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.4 -r1.2 \
    src/external/bsd/libarchive/dist/libarchive/archive_read.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/libarchive/dist/libarchive/archive_read.c
diff -u src/external/bsd/libarchive/dist/libarchive/archive_read.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/archive_read.c:1.2
--- src/external/bsd/libarchive/dist/libarchive/archive_read.c:1.1.1.4	Wed Jul 24 13:50:24 2019
+++ src/external/bsd/libarchive/dist/libarchive/archive_read.c	Tue Feb 25 09:01:25 2020
@@ -891,15 +891,16 @@ archive_read_data(struct archive *_a, vo
 			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;

Reply via email to