svn commit: r299895 - in vendor/libarchive/dist: cpio libarchive

Martin Matuska mm at FreeBSD.org
Mon May 16 04:47:33 UTC 2016


Author: mm
Date: Mon May 16 04:47:32 2016
New Revision: 299895
URL: https://svnweb.freebsd.org/changeset/base/299895

Log:
  Update vendor/libarchvie to git commit 860ec63
  Integrates my pull request #709

Modified:
  vendor/libarchive/dist/cpio/cpio.c
  vendor/libarchive/dist/libarchive/archive_read_support_format_cpio.c

Modified: vendor/libarchive/dist/cpio/cpio.c
==============================================================================
--- vendor/libarchive/dist/cpio/cpio.c	Mon May 16 04:43:47 2016	(r299894)
+++ vendor/libarchive/dist/cpio/cpio.c	Mon May 16 04:47:32 2016	(r299895)
@@ -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;

Modified: vendor/libarchive/dist/libarchive/archive_read_support_format_cpio.c
==============================================================================
--- vendor/libarchive/dist/libarchive/archive_read_support_format_cpio.c	Mon May 16 04:43:47 2016	(r299894)
+++ vendor/libarchive/dist/libarchive/archive_read_support_format_cpio.c	Mon May 16 04:47:32 2016	(r299895)
@@ -401,6 +401,11 @@ archive_read_format_cpio_read_header(str
 
 	/* 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)


More information about the svn-src-vendor mailing list