From 898dc8319355b7e985f68a9819f182aaed61b53a Mon Sep 17 00:00:00 2001 From: Fatima Qarni Date: Sat, 22 Jun 2024 17:49:53 -0500 Subject: [PATCH] Checks for null references (#2251) Microsoft's static analysis tool found some vulnerabilities from unguarded null references that I changed in [microsoft/cmake](https://github.com/microsoft/cmake). Pushing these changes upstream so they can be added to [kitware/cmake](https://github.com/Kitware/CMake). --- libarchive/archive_read_support_format_7zip.c | 2 +- libarchive/archive_write_set_format_cpio_binary.c | 3 +++ libarchive/archive_write_set_format_cpio_odc.c | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libarchive/archive_read_support_format_7zip.c b/libarchive/archive_read_support_format_7zip.c index e322808e7..b1e0c91ad 100644 --- a/libarchive/archive_read_support_format_7zip.c +++ b/libarchive/archive_read_support_format_7zip.c @@ -1063,7 +1063,7 @@ ppmd_read(void *p) ssize_t bytes_avail = 0; const uint8_t* data = __archive_read_ahead(a, (size_t)zip->ppstream.stream_in+1, &bytes_avail); - if(bytes_avail < zip->ppstream.stream_in+1) { + if(data == NULL || bytes_avail < zip->ppstream.stream_in+1) { archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Truncated 7z file data"); diff --git a/libarchive/archive_write_set_format_cpio_binary.c b/libarchive/archive_write_set_format_cpio_binary.c index 7a010ee00..a22d06ea3 100644 --- a/libarchive/archive_write_set_format_cpio_binary.c +++ b/libarchive/archive_write_set_format_cpio_binary.c @@ -577,6 +577,9 @@ archive_write_binary_close(struct archive_write *a) struct archive_entry *trailer; trailer = archive_entry_new2(NULL); + if (trailer == NULL) { + return ARCHIVE_FATAL; + } /* nlink = 1 here for GNU cpio compat. */ archive_entry_set_nlink(trailer, 1); archive_entry_set_size(trailer, 0); diff --git a/libarchive/archive_write_set_format_cpio_odc.c b/libarchive/archive_write_set_format_cpio_odc.c index 426f779a2..6dce78b45 100644 --- a/libarchive/archive_write_set_format_cpio_odc.c +++ b/libarchive/archive_write_set_format_cpio_odc.c @@ -467,6 +467,9 @@ archive_write_odc_close(struct archive_write *a) struct archive_entry *trailer; trailer = archive_entry_new2(NULL); + if (trailer == NULL) { + return ARCHIVE_FATAL; + } /* nlink = 1 here for GNU cpio compat. */ archive_entry_set_nlink(trailer, 1); archive_entry_set_size(trailer, 0); -- 2.47.2