From: Dustin L. Howett Date: Mon, 8 Jun 2026 20:29:48 +0000 (-0500) Subject: Merge pull request #3125 from stoeckmann/disk_clone X-Git-Tag: v3.8.8~49 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=47926b95a9c230c90d9bf55a0d41c19a227954b3;p=thirdparty%2Flibarchive.git Merge pull request #3125 from stoeckmann/disk_clone Check allocation in `_archive_write_disk_header` (cherry picked from commit 2b21f5a6ccb96c02630c846ff464c39bcd1a8b62) --- diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c index 4e4e7d935..da824f032 100644 --- a/libarchive/archive_write_disk_posix.c +++ b/libarchive/archive_write_disk_posix.c @@ -600,11 +600,12 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry) a->pst = NULL; a->current_fixup = NULL; a->deferred = 0; - if (a->entry) { - archive_entry_free(a->entry); - a->entry = NULL; - } + archive_entry_free(a->entry); a->entry = archive_entry_clone(entry); + if (a->entry == NULL) { + archive_set_error(&a->archive, ENOMEM, "Out of memory"); + return (ARCHIVE_FATAL); + } a->fd = -1; a->fd_offset = 0; a->offset = 0; diff --git a/libarchive/archive_write_disk_windows.c b/libarchive/archive_write_disk_windows.c index 17f09e091..2b125d32c 100644 --- a/libarchive/archive_write_disk_windows.c +++ b/libarchive/archive_write_disk_windows.c @@ -859,8 +859,11 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry) a->current_fixup = NULL; a->deferred = 0; archive_entry_free(a->entry); - a->entry = NULL; a->entry = archive_entry_clone(entry); + if (a->entry == NULL) { + archive_set_error(&a->archive, ENOMEM, "Out of memory"); + return (ARCHIVE_FATAL); + } a->fh = INVALID_HANDLE_VALUE; a->fd_offset = 0; a->offset = 0;