From 8eb6639196dbcd2a7e6bb657a72046fd4445cc9f Mon Sep 17 00:00:00 2001 From: Martin Matuska Date: Mon, 16 May 2016 04:47:32 +0000 Subject: [PATCH] Update vendor/libarchvie to git commit 860ec63 Integrates my pull request #709 --- cpio/cpio.c | 1 + libarchive/archive_read_support_format_cpio.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/cpio/cpio.c b/cpio/cpio.c index b267e9b8a744..4b69893b4579 100644 --- a/cpio/cpio.c +++ b/cpio/cpio.c @@ -295,6 +295,7 @@ main(int argc, char *argv[]) "Cannot use both -p and -%c", cpio->mode); cpio->mode = opt; cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; break; case OPTION_PASSPHRASE: cpio->passphrase = cpio->argument; diff --git a/libarchive/archive_read_support_format_cpio.c b/libarchive/archive_read_support_format_cpio.c index c2ca85bd3ad9..b09db0e9a59b 100644 --- a/libarchive/archive_read_support_format_cpio.c +++ b/libarchive/archive_read_support_format_cpio.c @@ -401,6 +401,11 @@ archive_read_format_cpio_read_header(struct archive_read *a, /* If this is a symlink, read the link contents. */ if (archive_entry_filetype(entry) == AE_IFLNK) { + if (cpio->entry_bytes_remaining > 1024 * 1024) { + archive_set_error(&a->archive, ENOMEM, + "Rejecting malformed cpio archive: symlink contents exceed 1 megabyte"); + return (ARCHIVE_FATAL); + } h = __archive_read_ahead(a, (size_t)cpio->entry_bytes_remaining, NULL); if (h == NULL)