Module Name:    src
Committed By:   martin
Date:           Mon Jun 21 15:41:39 UTC 2021

Modified Files:
        src/external/bsd/libarchive/dist/cat/test [netbsd-9]: test_0.c
        src/external/bsd/libarchive/dist/cpio/test [netbsd-9]: test_basic.c
            test_format_newc.c
        src/external/bsd/libarchive/dist/libarchive [netbsd-9]: archive_read.c
            archive_read_disk_posix.c archive_read_open_filename.c
            archive_read_support_format_xar.c archive_write_disk_posix.c
        src/external/bsd/libarchive/dist/libarchive/test [netbsd-9]:
            test_acl_platform_nfs4.c test_acl_platform_posix1e.c
            test_compat_zip.c test_fuzz.c test_read_extract.c
            test_read_format_gtar_sparse.c test_read_format_zip.c
            test_read_format_zip_7075_utf8_paths.c
            test_read_format_zip_comment_stored.c
            test_read_format_zip_extra_padding.c
            test_read_format_zip_high_compression.c test_read_format_zip_jar.c
            test_read_format_zip_mac_metadata.c
            test_read_format_zip_malformed.c test_read_format_zip_msdos.c
            test_read_format_zip_nested.c test_read_format_zip_nofiletype.c
            test_read_format_zip_padded.c test_read_format_zip_sfx.c
            test_read_format_zip_with_invalid_traditional_eocd.c
            test_read_format_zip_zip64.c test_read_pax_truncated.c
            test_read_truncated_filter.c test_sparse_basic.c test_write_disk.c
            test_write_disk_secure.c test_write_format_cpio_empty.c
            test_write_format_shar_empty.c test_write_format_tar.c
            test_write_format_tar_sparse.c
        src/external/bsd/libarchive/dist/tar [netbsd-9]: write.c
        src/external/bsd/libarchive/dist/tar/test [netbsd-9]: test_basic.c
            test_copy.c test_option_C_upper.c test_option_s.c
        src/external/bsd/libarchive/dist/test_utils [netbsd-9]: test_common.h
            test_main.c

Log Message:
Apply patch, requested by christos in ticket #1297:

        external/bsd/libarchive/dist/cat/test/test_0.c                  up to 
1.2
        external/bsd/libarchive/dist/cpio/test/test_basic.c             up to 
1.2
        external/bsd/libarchive/dist/cpio/test/test_format_newc.c       up to 
1.3
        external/bsd/libarchive/dist/libarchive/archive_read.c          up to 
1.2
        external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c       
up to 1.2
        external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c    
up to 1.2
        
external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c       
up to 1.2
        external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c      
up to 1.6
        external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c   
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c        
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c  up to 
1.2
        external/bsd/libarchive/dist/libarchive/test/test_fuzz.c        up to 
1.2
        external/bsd/libarchive/dist/libarchive/test/test_read_extract.c        
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c     
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c     
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c
     up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c
      up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c
       up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c
    up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c 
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c
        up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c   
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c       
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c      
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c  
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c      
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c 
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c
       up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c       
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c  
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c       
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c        
up to 1.3
        external/bsd/libarchive/dist/libarchive/test/test_write_disk.c  up to 
1.2
        external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c   
up to 1.4
        
external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c     
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c     
up to 1.2
        external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c    
up to 1.2
        
external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c     
up to 1.2
        external/bsd/libarchive/dist/tar/write.c                        up to 
1.3
        external/bsd/libarchive/dist/tar/test/test_basic.c              up to 
1.2
        external/bsd/libarchive/dist/tar/test/test_copy.c               up to 
1.3
        external/bsd/libarchive/dist/tar/test/test_option_C_upper.c     up to 
1.2
        external/bsd/libarchive/dist/tar/test/test_option_s.c           up to 
1.2
        external/bsd/libarchive/dist/test_utils/test_common.h           up to 
1.2
        external/bsd/libarchive/dist/test_utils/test_main.c             up to 
1.2

PR 56257: sync libarchive with -current (leaving out changes not relevant
for this branch).


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.16.1 \
    src/external/bsd/libarchive/dist/cat/test/test_0.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    src/external/bsd/libarchive/dist/cpio/test/test_basic.c \
    src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    src/external/bsd/libarchive/dist/libarchive/archive_read.c \
    
src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
    src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.14.1 \
    src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c
cvs rdiff -u -r1.1.1.2.2.2 -r1.1.1.2.2.3 \
    src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
    src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.18.1 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c
 \
    src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c 
\
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c \
    src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c 
\
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c \
    src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c \
    src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.2.1 \
    src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.14.1 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c 
\
    src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c \
    src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c \
    
src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c 
\
    
src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c 
\
    src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.2.1 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c
 \
    
src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c
cvs rdiff -u -r1.1.1.2.2.1 -r1.1.1.2.2.2 \
    src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c
cvs rdiff -u -r1.1.1.3.14.1 -r1.1.1.3.14.2 \
    src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c
cvs rdiff -u -r1.1.1.5 -r1.1.1.5.2.1 \
    src/external/bsd/libarchive/dist/tar/write.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    src/external/bsd/libarchive/dist/tar/test/test_basic.c
cvs rdiff -u -r1.1.1.4.2.1 -r1.1.1.4.2.2 \
    src/external/bsd/libarchive/dist/tar/test/test_copy.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.18.1 \
    src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.2.1 \
    src/external/bsd/libarchive/dist/tar/test/test_option_s.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \
    src/external/bsd/libarchive/dist/test_utils/test_common.h \
    src/external/bsd/libarchive/dist/test_utils/test_main.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/cat/test/test_0.c
diff -u src/external/bsd/libarchive/dist/cat/test/test_0.c:1.1.1.1 src/external/bsd/libarchive/dist/cat/test/test_0.c:1.1.1.1.16.1
--- src/external/bsd/libarchive/dist/cat/test/test_0.c:1.1.1.1	Thu Apr 20 12:55:31 2017
+++ src/external/bsd/libarchive/dist/cat/test/test_0.c	Mon Jun 21 15:41:38 2021
@@ -59,7 +59,7 @@ DEFINE_TEST(test_0)
 	 * we know some option that will succeed.
 	 */
 	if (0 != systemf("%s --version >" DEV_NULL, testprog)) {
-		failure("Unable to successfully run: %s --version\n", testprog, testprog);
+		failure("Unable to successfully run: %s --version\n", testprog);
 		assert(0);
 	}
 

Index: src/external/bsd/libarchive/dist/cpio/test/test_basic.c
diff -u src/external/bsd/libarchive/dist/cpio/test/test_basic.c:1.1.1.4 src/external/bsd/libarchive/dist/cpio/test/test_basic.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/cpio/test/test_basic.c:1.1.1.4	Wed Jul 24 13:50:21 2019
+++ src/external/bsd/libarchive/dist/cpio/test/test_basic.c	Mon Jun 21 15:41:38 2021
@@ -33,15 +33,15 @@ verify_files(const char *msg)
 	 */
 
 	/* Regular file with 2 links. */
-	failure(msg);
+	failure("%s", msg);
 	assertIsReg("file", 0644);
-	failure(msg);
+	failure("%s", msg);
 	assertFileSize("file", 10);
-	failure(msg);
+	failure("%s", msg);
 	assertFileNLinks("file", 2);
 
 	/* Another name for the same file. */
-	failure(msg);
+	failure("%s", msg);
 	assertIsHardlink("linkfile", "file");
 
 	/* Symlink */
@@ -49,11 +49,11 @@ verify_files(const char *msg)
 		assertIsSymlink("symlink", "file", 0);
 
 	/* Another file with 1 link and different permissions. */
-	failure(msg);
+	failure("%s", msg);
 	assertIsReg("file2", 0777);
-	failure(msg);
+	failure("%s", msg);
 	assertFileSize("file2", 10);
-	failure(msg);
+	failure("%s", msg);
 	assertFileNLinks("file2", 1);
 
 	/* dir */
Index: src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c
diff -u src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c:1.1.1.4 src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c:1.1.1.4	Wed Jul 24 13:50:21 2019
+++ src/external/bsd/libarchive/dist/cpio/test/test_format_newc.c	Mon Jun 21 15:41:38 2021
@@ -49,10 +49,11 @@ is_hex(const char *p, size_t l)
 	return (1);
 }
 
-static int
+/* Convert up to 8 hex characters to unsigned 32-bit decimal integer */
+static uint32_t
 from_hex(const char *p, size_t l)
 {
-	int r = 0;
+	uint32_t r = 0;
 
 	while (l > 0) {
 		r *= 16;
@@ -82,11 +83,11 @@ DEFINE_TEST(test_format_newc)
 {
 	FILE *list;
 	int r;
-	int devmajor, devminor, ino, gid;
-	int uid = -1;
+	uint32_t devmajor, devminor, ino, gid, uid;
 	time_t t, t2, now;
 	char *p, *e;
-	size_t s, fs, ns;
+	size_t s;
+	uint64_t fs, ns;
 	char result[1024];
 
 	assertUmask(0);
@@ -199,28 +200,32 @@ DEFINE_TEST(test_format_newc)
 #else
 	assertEqualInt(0x81a4, from_hex(e + 14, 8)); /* Mode */
 #endif	
-	if (uid < 0)
-		uid = from_hex(e + 22, 8);
+#if defined(_WIN32)
+	uid = from_hex(e + 22, 8);
+#else
 	assertEqualInt(from_hex(e + 22, 8), uid); /* uid */
+#endif
 	gid = from_hex(e + 30, 8); /* gid */
 	assertEqualMem(e + 38, "00000003", 8); /* nlink */
 	t = from_hex(e + 46, 8); /* mtime */
-	failure("t=0x%08x now=0x%08x=%d", t, now, now);
+	failure("t=%#08jx now=%#08jx=%jd", (intmax_t)t, (intmax_t)now,
+	    (intmax_t)now);
 	assert(t <= now); /* File wasn't created in future. */
-	failure("t=0x%08x now - 2=0x%08x = %d", t, now - 2, now - 2);
+	failure("t=%#08jx now - 2=%#08jx=%jd", (intmax_t)t, (intmax_t)now - 2,
+	    (intmax_t)now - 2);
 	assert(t >= now - 2); /* File was created w/in last 2 secs. */
 	failure("newc format stores body only with last appearance of a link\n"
 	    "       first appearance should be empty, so this file size\n"
 	    "       field should be zero");
 	assertEqualInt(0, from_hex(e + 54, 8)); /* File size */
-	fs = from_hex(e + 54, 8);
+	fs = (uint64_t)from_hex(e + 54, 8);
 	fs += PAD(fs, 4);
 	devmajor = from_hex(e + 62, 8); /* devmajor */
 	devminor = from_hex(e + 70, 8); /* devminor */
 	assert(is_hex(e + 78, 8)); /* rdevmajor */
 	assert(is_hex(e + 86, 8)); /* rdevminor */
 	assertEqualMem(e + 94, "00000006", 8); /* Name size */
-	ns = from_hex(e + 94, 8);
+	ns = (uint64_t)from_hex(e + 94, 8);
 	ns += PAD(ns + 2, 4);
 	assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
 	assertEqualMem(e + 110, "file1\0", 6); /* Name contents */
@@ -243,17 +248,18 @@ DEFINE_TEST(test_format_newc)
 		assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
 		assertEqualMem(e + 38, "00000001", 8); /* nlink */
 		t2 = from_hex(e + 46, 8); /* mtime */
-		failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+		failure("First entry created at t=%#08jx this entry created"
+		    " at t2=%#08jx", (intmax_t)t, (intmax_t)t2);
 		assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
 		assertEqualMem(e + 54, "00000005", 8); /* File size */
-		fs = from_hex(e + 54, 8);
+		fs = (uint64_t)from_hex(e + 54, 8);
 		fs += PAD(fs, 4);
 		assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
 		assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
 		assert(is_hex(e + 78, 8)); /* rdevmajor */
 		assert(is_hex(e + 86, 8)); /* rdevminor */
 		assertEqualMem(e + 94, "00000008", 8); /* Name size */
-		ns = from_hex(e + 94, 8);
+		ns = (uint64_t)from_hex(e + 94, 8);
 		ns += PAD(ns + 2, 4);
 		assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
 		assertEqualMem(e + 110, "symlink\0\0\0", 10); /* Name contents */
@@ -278,17 +284,18 @@ DEFINE_TEST(test_format_newc)
 	assertEqualInt(nlinks("dir"), from_hex(e + 38, 8)); /* nlinks */
 #endif
 	t2 = from_hex(e + 46, 8); /* mtime */
-	failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+	failure("First entry created at t=%#08jx this entry created at"
+	    "t2=%#08jx", (intmax_t)t, (intmax_t)t2);
 	assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
 	assertEqualMem(e + 54, "00000000", 8); /* File size */
-	fs = from_hex(e + 54, 8);
+	fs = (uint64_t)from_hex(e + 54, 8);
 	fs += PAD(fs, 4);
 	assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
 	assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
 	assert(is_hex(e + 78, 8)); /* rdevmajor */
 	assert(is_hex(e + 86, 8)); /* rdevminor */
 	assertEqualMem(e + 94, "00000004", 8); /* Name size */
-	ns = from_hex(e + 94, 8);
+	ns = (uint64_t)from_hex(e + 94, 8);
 	ns += PAD(ns + 2, 4);
 	assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
 	assertEqualMem(e + 110, "dir\0\0\0", 6); /* Name contents */
@@ -311,17 +318,18 @@ DEFINE_TEST(test_format_newc)
 	assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
 	assertEqualMem(e + 38, "00000003", 8); /* nlink */
 	t2 = from_hex(e + 46, 8); /* mtime */
-	failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+	failure("First entry created at t=%#08jx this entry created at"
+	    "t2=%#08jx", (intmax_t)t, (intmax_t)t2);
 	assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
 	assertEqualInt(10, from_hex(e + 54, 8)); /* File size */
-	fs = from_hex(e + 54, 8);
+	fs = (uint64_t)from_hex(e + 54, 8);
 	fs += PAD(fs, 4);
 	assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
 	assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
 	assert(is_hex(e + 78, 8)); /* rdevmajor */
 	assert(is_hex(e + 86, 8)); /* rdevminor */
 	assertEqualMem(e + 94, "00000009", 8); /* Name size */
-	ns = from_hex(e + 94, 8);
+	ns = (uint64_t)from_hex(e + 94, 8);
 	ns += PAD(ns + 2, 4);
 	assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
 	assertEqualMem(e + 110, "hardlink\0\0", 10); /* Name contents */

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.1.1.4.2.1
--- 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	Mon Jun 21 15:41:38 2021
@@ -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;
Index: src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c
diff -u src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c:1.1.1.4	Wed Jul 24 13:50:22 2019
+++ src/external/bsd/libarchive/dist/libarchive/archive_read_support_format_xar.c	Mon Jun 21 15:41:38 2021
@@ -458,6 +458,11 @@ archive_read_support_format_xar(struct a
 		return (ARCHIVE_FATAL);
 	}
 
+	/* initialize xar->file_queue */
+	xar->file_queue.allocated = 0;
+	xar->file_queue.used = 0;
+	xar->file_queue.files = NULL;
+
 	r = __archive_read_register_format(a,
 	    xar,
 	    "xar",
@@ -1221,10 +1226,12 @@ heap_add_entry(struct archive_read *a,
 	/* Expand our pending files list as necessary. */
 	if (heap->used >= heap->allocated) {
 		struct xar_file **new_pending_files;
-		int new_size = heap->allocated * 2;
+		int new_size;
 
 		if (heap->allocated < 1024)
 			new_size = 1024;
+		else
+			new_size = heap->allocated * 2;
 		/* Overflow might keep us from growing the list. */
 		if (new_size <= heap->allocated) {
 			archive_set_error(&a->archive,
@@ -1238,9 +1245,11 @@ heap_add_entry(struct archive_read *a,
 			    ENOMEM, "Out of memory");
 			return (ARCHIVE_FATAL);
 		}
-		memcpy(new_pending_files, heap->files,
-		    heap->allocated * sizeof(new_pending_files[0]));
-		free(heap->files);
+		if (heap->allocated) {
+			memcpy(new_pending_files, heap->files,
+			    heap->allocated * sizeof(new_pending_files[0]));
+			free(heap->files);
+		}
 		heap->files = new_pending_files;
 		heap->allocated = new_size;
 	}

Index: src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c
diff -u src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c:1.1.1.2 src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c:1.1.1.2.2.1
--- src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c:1.1.1.2	Wed Jul 24 13:50:23 2019
+++ src/external/bsd/libarchive/dist/libarchive/archive_read_disk_posix.c	Mon Jun 21 15:41:38 2021
@@ -1527,6 +1527,15 @@ get_xfer_size(struct tree *t, int fd, co
 #if defined(HAVE_STATFS) && defined(HAVE_FSTATFS) && defined(MNT_LOCAL) \
 	&& !defined(ST_LOCAL)
 
+static void
+set_transfer_size(struct filesystem *fs, const struct statfs *sfs)
+{
+	fs->xfer_align = sfs->f_bsize > 0 ? (long)sfs->fs_bsize : -1;
+	fs->max_xfer_size = -1;
+	fs->min_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
+	fs->incr_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
+}
+
 /*
  * Gather current filesystem properties on FreeBSD, OpenBSD and Mac OS X.
  */
@@ -1595,10 +1604,7 @@ setup_current_filesystem(struct archive_
 		return (ARCHIVE_FAILED);
 	} else if (xr == 1) {
 		/* pathconf(_PC_REX_*) operations are not supported. */
-		t->current_filesystem->xfer_align = sfs.f_bsize;
-		t->current_filesystem->max_xfer_size = -1;
-		t->current_filesystem->min_xfer_size = sfs.f_iosize;
-		t->current_filesystem->incr_xfer_size = sfs.f_iosize;
+		set_transfer_size(t->current_filesystem, &sfs);
 	}
 	if (sfs.f_flags & MNT_LOCAL)
 		t->current_filesystem->remote = 0;
@@ -1653,6 +1659,20 @@ setup_current_filesystem(struct archive_
 
 #elif (defined(HAVE_STATVFS) || defined(HAVE_FSTATVFS)) && defined(ST_LOCAL)
 
+static void
+set_transfer_size(struct filesystem *fs, const struct statvfs *sfs)
+{
+	fs->xfer_align = sfs->f_frsize > 0 ? (long)sfs->f_frsize : -1;
+	fs->max_xfer_size = -1;
+#if defined(HAVE_STRUCT_STATVFS_F_IOSIZE)
+	fs->min_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
+	fs->incr_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
+#else
+	fs->min_xfer_size = sfs->f_bsize > 0 : (long)sfs->f_bsize : -1;
+	fs->incr_xfer_size = sfs->f_bsize > 0 : (long)sfs->f_bsize : -1;
+#endif
+}
+
 /*
  * Gather current filesystem properties on NetBSD
  */
@@ -1690,15 +1710,7 @@ setup_current_filesystem(struct archive_
 	} else if (xr == 1) {
 		/* Usually come here unless NetBSD supports _PC_REC_XFER_ALIGN
 		 * for pathconf() function. */
-		t->current_filesystem->xfer_align = sfs.f_frsize;
-		t->current_filesystem->max_xfer_size = -1;
-#if defined(HAVE_STRUCT_STATVFS_F_IOSIZE)
-		t->current_filesystem->min_xfer_size = sfs.f_iosize;
-		t->current_filesystem->incr_xfer_size = sfs.f_iosize;
-#else
-		t->current_filesystem->min_xfer_size = sfs.f_bsize;
-		t->current_filesystem->incr_xfer_size = sfs.f_bsize;
-#endif
+		set_transfer_size(t->current_filesystem, &sfs);
 	}
 	if (sfs.f_flag & ST_LOCAL)
 		t->current_filesystem->remote = 0;
@@ -1805,15 +1817,9 @@ setup_current_filesystem(struct archive_
 	} else if (xr == 1) {
 		/* pathconf(_PC_REX_*) operations are not supported. */
 #if defined(HAVE_STATVFS)
-		t->current_filesystem->xfer_align = svfs.f_frsize;
-		t->current_filesystem->max_xfer_size = -1;
-		t->current_filesystem->min_xfer_size = svfs.f_bsize;
-		t->current_filesystem->incr_xfer_size = svfs.f_bsize;
+		set_transfer_size(t->current_filesystem, &svfs);
 #else
-		t->current_filesystem->xfer_align = sfs.f_frsize;
-		t->current_filesystem->max_xfer_size = -1;
-		t->current_filesystem->min_xfer_size = sfs.f_bsize;
-		t->current_filesystem->incr_xfer_size = sfs.f_bsize;
+		set_transfer_size(t->current_filesystem, &sfs);
 #endif
 	}
 	switch (sfs.f_type) {
@@ -1920,10 +1926,7 @@ setup_current_filesystem(struct archive_
 		return (ARCHIVE_FAILED);
 	} else if (xr == 1) {
 		/* pathconf(_PC_REX_*) operations are not supported. */
-		t->current_filesystem->xfer_align = sfs.f_frsize;
-		t->current_filesystem->max_xfer_size = -1;
-		t->current_filesystem->min_xfer_size = sfs.f_bsize;
-		t->current_filesystem->incr_xfer_size = sfs.f_bsize;
+		set_transfer_size(t->current_filesystem, &sfs);
 	}
 
 #if defined(ST_NOATIME)

Index: src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c
diff -u src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c:1.1.1.4.14.1
--- src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c:1.1.1.4	Thu Apr 20 12:55:36 2017
+++ src/external/bsd/libarchive/dist/libarchive/archive_read_open_filename.c	Mon Jun 21 15:41:38 2021
@@ -221,7 +221,9 @@ file_open(struct archive *a, void *clien
 	struct read_file_data *mine = (struct read_file_data *)client_data;
 	void *buffer;
 	const char *filename = NULL;
+#if defined(_WIN32) && !defined(__CYGWIN__)
 	const wchar_t *wfilename = NULL;
+#endif
 	int fd = -1;
 	int is_disk_like = 0;
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
@@ -281,10 +283,12 @@ file_open(struct archive *a, void *clien
 #endif
 	}
 	if (fstat(fd, &st) != 0) {
+#if defined(_WIN32) && !defined(__CYGWIN__)
 		if (mine->filename_type == FNT_WCS)
 			archive_set_error(a, errno, "Can't stat '%S'",
 			    wfilename);
 		else
+#endif
 			archive_set_error(a, errno, "Can't stat '%s'",
 			    filename);
 		goto fail;

Index: src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c
diff -u src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c:1.1.1.2.2.2 src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c:1.1.1.2.2.3
--- src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c:1.1.1.2.2.2	Mon Feb 10 19:30:00 2020
+++ src/external/bsd/libarchive/dist/libarchive/archive_write_disk_posix.c	Mon Jun 21 15:41:38 2021
@@ -2184,8 +2184,11 @@ restore_entry(struct archive_write_disk 
 			if ((a->flags & ARCHIVE_EXTRACT_ATOMIC) &&
 			    S_ISREG(a->st.st_mode)) {
 				/* Use a temporary file to extract */
-				if ((a->fd = la_mktemp(a)) == -1)
+				if ((a->fd = la_mktemp(a)) == -1) {
+					archive_set_error(&a->archive, en,
+					    "Can't create '%s'", a->name);
 					return ARCHIVE_FAILED;
+				}
 				a->pst = NULL;
 				en = 0;
 			} else {

Index: src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c:1.1.1.2 src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c:1.1.1.2.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c:1.1.1.2	Wed Jul 24 13:50:38 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_nfs4.c	Mon Jun 21 15:41:38 2021
@@ -634,9 +634,11 @@ acl_match(acl_entry_t aclent, struct mya
 	case ACL_ENTRY_TYPE_AUDIT:
 		if (myacl->type != ARCHIVE_ENTRY_ACL_TYPE_AUDIT)
 			return (0);
+		break;
 	case ACL_ENTRY_TYPE_ALARM:
 		if (myacl->type != ARCHIVE_ENTRY_ACL_TYPE_ALARM)
 			return (0);
+		break;
 	default:
 		return (0);
 	}

Index: src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c:1.1.1.1	Thu Apr 20 12:55:53 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_acl_platform_posix1e.c	Mon Jun 21 15:41:38 2021
@@ -364,8 +364,8 @@ DEFINE_TEST(test_acl_platform_posix1e_re
 	struct archive *a;
 	struct archive_entry *ae;
 	int n, fd, flags, dflags;
-	char *func, *acl_text;
-	const char *acl1_text, *acl2_text, *acl3_text;
+	char *acl_text;
+	const char *func, *acl1_text, *acl2_text, *acl3_text;
 #if ARCHIVE_ACL_SUNOS
 	void *aclp;
 	int aclcnt;
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c:1.1.1.1	Thu Apr 20 12:55:51 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_comment_stored.c	Mon Jun 21 15:41:38 2021
@@ -38,7 +38,7 @@ verify(const char *refname)
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Symlinks can only be extracted with the seeking reader. */
 	assert((a = archive_read_new()) != NULL);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c:1.1.1.1	Thu Apr 20 12:55:37 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_high_compression.c	Mon Jun 21 15:41:38 2021
@@ -56,7 +56,7 @@ DEFINE_TEST(test_read_format_zip_high_co
 	}
 
 	extract_reference_file(refname);
-	p = slurpfile(&archive_size, refname);
+	p = slurpfile(&archive_size, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
         assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c:1.1.1.1	Thu Apr 20 12:55:56 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_jar.c	Mon Jun 21 15:41:38 2021
@@ -40,7 +40,7 @@ DEFINE_TEST(test_read_format_zip_jar)
 	char data[16];
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c:1.1.1.1	Thu Apr 20 12:55:53 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_mac_metadata.c	Mon Jun 21 15:41:38 2021
@@ -76,7 +76,7 @@ DEFINE_TEST(test_read_format_zip_mac_met
 	};
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Mac metadata can only be extracted with the seeking reader. */
 	assert((a = archive_read_new()) != NULL);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c:1.1.1.1	Thu Apr 20 12:55:38 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_malformed.c	Mon Jun 21 15:41:38 2021
@@ -46,7 +46,7 @@ test_malformed1(void)
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c:1.1.1.1	Thu Apr 20 12:55:53 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_msdos.c	Mon Jun 21 15:41:38 2021
@@ -103,7 +103,7 @@ DEFINE_TEST(test_read_format_zip_msdos)
 	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c:1.1.1.1	Thu Apr 20 12:55:40 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nested.c	Mon Jun 21 15:41:38 2021
@@ -34,7 +34,7 @@ DEFINE_TEST(test_read_format_zip_nested)
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Inspect outer Zip */
 	assert((a = archive_read_new()) != NULL);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c:1.1.1.1	Thu Apr 20 12:55:38 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_nofiletype.c	Mon Jun 21 15:41:38 2021
@@ -40,7 +40,7 @@ DEFINE_TEST(test_read_format_zip_nofilet
 	char data[16];
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c:1.1.1.1	Thu Apr 20 12:55:49 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_padded.c	Mon Jun 21 15:41:38 2021
@@ -34,7 +34,7 @@ verify_padded_archive(const char *refnam
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c:1.1.1.1	Thu Apr 20 12:55:55 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_sfx.c	Mon Jun 21 15:41:38 2021
@@ -37,7 +37,7 @@ DEFINE_TEST(test_read_format_zip_sfx)
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Symlinks can only be extracted with the seeking reader. */
 	assert((a = archive_read_new()) != NULL);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c:1.1.1.1	Thu Apr 20 12:55:48 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c	Mon Jun 21 15:41:38 2021
@@ -39,7 +39,7 @@ DEFINE_TEST(test_read_format_zip_with_in
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c:1.1.1.1	Thu Apr 20 12:55:51 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_zip64.c	Mon Jun 21 15:41:38 2021
@@ -88,7 +88,7 @@ DEFINE_TEST(test_read_format_zip_zip64a)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* First read with seeking. */
 	assert((a = archive_read_new()) != NULL);
@@ -112,7 +112,7 @@ DEFINE_TEST(test_read_format_zip_zip64b)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* First read with seeking. */
 	assert((a = archive_read_new()) != NULL);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c:1.1.1.1	Thu Apr 20 12:55:37 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_truncated_filter.c	Mon Jun 21 15:41:38 2021
@@ -83,7 +83,7 @@ test_truncation(const char *compression,
 	for (i = 0; i < 100; i++) {
 		sprintf(path, "%s%d", compression, i);
 		archive_entry_copy_pathname(ae, path);
-		failure(path);
+		failure("%s", path);
 		if (!assertEqualIntA(a, ARCHIVE_OK,
 		    archive_write_header(a, ae))) {
 			archive_write_free(a);
@@ -94,7 +94,7 @@ test_truncation(const char *compression,
 		for (j = 0; j < (int)datasize; ++j) {
 			data[j] = (char)(rand() % 256);
 		}
-		failure(path);
+		failure("%s", path);
 		if (!assertEqualIntA(a, datasize,
 		    archive_write_data(a, data, datasize))) {
 			archive_write_free(a);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c:1.1.1.1	Thu Apr 20 12:55:52 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar_sparse.c	Mon Jun 21 15:41:38 2021
@@ -94,7 +94,7 @@ test_1(void)
 
 		/* This calculation gives "the smallest multiple of
 		 * the block size that is at least 11264 bytes". */
-		failure("blocksize=%d", blocksize);
+		failure("blocksize=%zu", blocksize);
 		assertEqualInt(((11264 - 1)/blocksize+1)*blocksize, used);
 
 		/*
@@ -229,7 +229,7 @@ test_2(void)
 
 	/* This calculation gives "the smallest multiple of
 	 * the block size that is at least 11264 bytes". */
-	failure("blocksize=%d", blocksize);
+	failure("blocksize=%zu", blocksize);
 	assertEqualInt(((11264 - 1)/blocksize+1)*blocksize, used);
 
 	/*

Index: src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c:1.1.1.4	Wed Jul 24 13:50:24 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_compat_zip.c	Mon Jun 21 15:41:38 2021
@@ -156,7 +156,7 @@ DEFINE_TEST(test_compat_zip_4)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* SFX files require seek support. */
 	assert((a = archive_read_new()) != NULL);
@@ -214,7 +214,7 @@ DEFINE_TEST(test_compat_zip_5)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Verify with seek support.
 	 * Everything works correctly here. */
@@ -370,7 +370,7 @@ DEFINE_TEST(test_compat_zip_6)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -402,7 +402,7 @@ DEFINE_TEST(test_compat_zip_7)
 	int i;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	for (i = 1; i < 1000; ++i) {
 		assert((a = archive_read_new()) != NULL);
@@ -436,7 +436,7 @@ DEFINE_TEST(test_compat_zip_8)
 	size_t s;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c:1.1.1.4	Wed Jul 24 13:50:37 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_extract.c	Mon Jun 21 15:41:38 2021
@@ -120,7 +120,7 @@ DEFINE_TEST(test_read_extract)
 	assertA(0 == archive_read_support_filter_all(a));
 	assertA(0 == archive_read_open_memory(a, buff, BUFF_SIZE));
 	/* Restore first entry with _EXTRACT_PERM. */
-	failure("Error reading first entry", i);
+	failure("Error reading first entry");
 	assertA(0 == archive_read_next_header(a, &ae));
 	assertA(0 == archive_read_extract(a, ae, ARCHIVE_EXTRACT_PERM));
 	/* Rest of entries get restored with no flags. */
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c:1.1.1.4 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c:1.1.1.4	Wed Jul 24 13:50:37 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip.c	Mon Jun 21 15:41:38 2021
@@ -194,7 +194,7 @@ test_basic(void)
 	verify_basic(a, 1);
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
@@ -264,7 +264,7 @@ test_info_zip_ux(void)
 	verify_info_zip_ux(a, 1);
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
@@ -328,7 +328,7 @@ test_extract_length_at_end(void)
 	verify_extract_length_at_end(a, 1);
 
 	/* Verify extraction with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
@@ -347,7 +347,7 @@ test_symlink(void)
 	struct archive_entry *ae;
 
 	extract_reference_file(refname);
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 
 	/* Symlinks can only be extracted with the seeking reader. */
 	assert((a = archive_read_new()) != NULL);

Index: src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c:1.1.1.3.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c:1.1.1.3	Wed Jul 24 13:50:24 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_fuzz.c	Mon Jun 21 15:41:38 2021
@@ -119,7 +119,8 @@ test_fuzz(const struct files *filesets)
 			for (i = 0; filesets[n].names[i] != NULL; ++i)
 			{
 				char *newraw;
-				tmp = slurpfile(&size, filesets[n].names[i]);
+				tmp = slurpfile(&size, "%s",
+						filesets[n].names[i]);
 				newraw = realloc(rawimage, oldsize + size);
 				if (!assert(newraw != NULL))
 				{

Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c:1.1.1.3	Thu Apr 20 12:55:48 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_gtar_sparse.c	Mon Jun 21 15:41:38 2021
@@ -214,8 +214,9 @@ verify_archive_file(const char *name, st
 					 * Any byte before the expected
 					 * data must be NULL.
 					 */
-					failure("%s: pad at offset %d "
-					    "should be zero", name, actual.o);
+					failure("%s: pad at offset %jd "
+						"should be zero", name,
+						(intmax_t)actual.o);
 					assertEqualInt(c, 0);
 				} else if (actual.o == expect.o) {
 					/*
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c:1.1.1.3	Thu Apr 20 12:55:49 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_pax_truncated.c	Mon Jun 21 15:41:38 2021
@@ -82,7 +82,7 @@ DEFINE_TEST(test_read_pax_truncated)
 			assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
 			goto wrap_up;
 		} else {
-			failure("Archive truncated to %d bytes", i);
+			failure("Archive truncated to %zu bytes", i);
 			assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
 		}
 
@@ -91,7 +91,7 @@ DEFINE_TEST(test_read_pax_truncated)
 			assertEqualIntA(a, ARCHIVE_FATAL, archive_read_data(a, filedata, filedata_size));
 			goto wrap_up;
 		} else {
-			failure("Archive truncated to %d bytes", i);
+			failure("Archive truncated to %zu bytes", i);
 			assertEqualIntA(a, filedata_size,
 			    archive_read_data(a, filedata, filedata_size));
 		}
@@ -103,7 +103,7 @@ DEFINE_TEST(test_read_pax_truncated)
 		 * does not return an error if it can't consume
 		 * it.) */
 		if (i < 1536 + 512*((filedata_size + 511)/512) + 512) {
-			failure("i=%d minsize=%d", i,
+			failure("i=%zu minsize=%zu", i,
 			    1536 + 512*((filedata_size + 511)/512) + 512);
 			assertEqualIntA(a, ARCHIVE_FATAL,
 			    archive_read_next_header(a, &ae));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c:1.1.1.3	Thu Apr 20 12:55:49 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_disk.c	Mon Jun 21 15:41:38 2021
@@ -186,7 +186,7 @@ static void create_reg_file4(struct arch
 #if !defined(_WIN32) || defined(__CYGWIN__)
 	assertEqualInt(st.st_mode, (archive_entry_mode(ae) & ~UMASK));
 #endif
-	failure(msg);
+	failure("%s", msg);
 	assertEqualInt(st.st_size, sizeof(data));
 }
 
Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c:1.1.1.3	Thu Apr 20 12:55:48 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_format_cpio_empty.c	Mon Jun 21 15:41:38 2021
@@ -64,7 +64,7 @@ DEFINE_TEST(test_write_format_cpio_empty
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
 	assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 
-	failure("Empty cpio archive should be exactly 87 bytes, was %d.", used);
+	failure("Empty cpio archive should be exactly 87 bytes, was %zu.", used);
 	assert(used == 87);
 	failure("Empty cpio archive is incorrectly formatted.");
 	assertEqualMem(buff, ref, 87);
Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c:1.1.1.3	Thu Apr 20 12:55:39 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_format_shar_empty.c	Mon Jun 21 15:41:38 2021
@@ -49,6 +49,6 @@ DEFINE_TEST(test_write_format_shar_empty
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
 	assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 
-	failure("Empty shar archive should be exactly 0 bytes, was %d.", used);
+	failure("Empty shar archive should be exactly 0 bytes, was %zu.", used);
 	assert(used == 0);
 }
Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c:1.1.1.3 src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c:1.1.1.3.14.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c:1.1.1.3	Thu Apr 20 12:55:52 2017
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_format_tar.c	Mon Jun 21 15:41:38 2021
@@ -81,7 +81,7 @@ DEFINE_TEST(test_write_format_tar)
 
 		/* This calculation gives "the smallest multiple of
 		 * the block size that is at least 2048 bytes". */
-		failure("blocksize=%d", blocksize);
+		failure("blocksize=%zu", blocksize);
 		assertEqualInt(((2048 - 1)/blocksize+1)*blocksize, used);
 
 		/*

Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c:1.1.1.1.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c:1.1.1.1	Wed Jul 24 13:50:38 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_7075_utf8_paths.c	Mon Jun 21 15:41:38 2021
@@ -90,7 +90,7 @@ DEFINE_TEST(test_read_format_zip_utf8_pa
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
Index: src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c:1.1.1.1 src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c:1.1.1.1.2.1
--- src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c:1.1.1.1	Wed Jul 24 13:50:38 2019
+++ src/external/bsd/libarchive/dist/libarchive/test/test_read_format_zip_extra_padding.c	Mon Jun 21 15:41:38 2021
@@ -80,7 +80,7 @@ DEFINE_TEST(test_read_format_zip_extra_p
 	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 
 	/* Verify with streaming reader. */
-	p = slurpfile(&s, refname);
+	p = slurpfile(&s, "%s", refname);
 	assert((a = archive_read_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));

Index: src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c:1.1.1.2.2.1 src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c:1.1.1.2.2.2
--- src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c:1.1.1.2.2.1	Tue Jan 21 15:48:52 2020
+++ src/external/bsd/libarchive/dist/libarchive/test/test_sparse_basic.c	Mon Jun 21 15:41:38 2021
@@ -430,7 +430,7 @@ verify_sparse_file(struct archive *a, co
 	assert(sparse->type == END);
 	assertEqualInt(expected_offset, archive_entry_size(ae));
 
-	failure(path);
+	failure("%s", path);
 	assertEqualInt(holes_seen, expected_holes);
 
 	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
@@ -466,7 +466,7 @@ verify_sparse_file2(struct archive *a, c
 	/* Verify the number of holes only, not its offset nor its
 	 * length because those alignments are deeply dependence on
 	 * its filesystem. */ 
-	failure(path);
+	failure("%s", path);
 	assertEqualInt(blocks, archive_entry_sparse_count(ae));
 	archive_entry_free(ae);
 }

Index: src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c
diff -u src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c:1.1.1.3.14.1 src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c:1.1.1.3.14.2
--- src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c:1.1.1.3.14.1	Tue Jan 21 15:48:52 2020
+++ src/external/bsd/libarchive/dist/libarchive/test/test_write_disk_secure.c	Mon Jun 21 15:41:38 2021
@@ -40,6 +40,16 @@ DEFINE_TEST(test_write_disk_secure)
 	struct archive *a;
 	struct archive_entry *ae;
 	struct stat st;
+	char tmp[2048];
+	const char *tmpdir;
+	const char *lname =
+	    "libarchive_test-test_write_disk_secure-absolute_symlink";
+#if 0
+	const char *fname =
+	    "libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp";
+#endif
+	const char *pname =
+	    "libarchive_test-test_write_disk_secure-absolute_path.tmp";
 
 	/* Start with a known umask. */
 	assertUmask(UMASK);
@@ -86,12 +96,15 @@ DEFINE_TEST(test_write_disk_secure)
 	assert(0 == archive_write_finish_entry(a));
 #endif
 
-	/* Write an absolute symlink to /tmp. */
+	/* Write an absolute symlink to $TMPDIR. */
 	archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS);
 	assert((ae = archive_entry_new()) != NULL);
-	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_symlink");
+	if ((tmpdir = getenv("TMPDIR")) == NULL)
+		tmpdir = "/tmp";
+	snprintf(tmp, sizeof(tmp), "%s/%s", tmpdir, lname);
+	archive_entry_copy_pathname(ae, tmp);
 	archive_entry_set_mode(ae, S_IFLNK | 0777);
-	archive_entry_set_symlink(ae, "/tmp");
+	archive_entry_set_symlink(ae, tmpdir);
 	archive_write_disk_set_options(a, 0);
 	assert(0 == archive_write_header(a, ae));
 	assert(0 == archive_write_finish_entry(a));
@@ -99,15 +112,18 @@ DEFINE_TEST(test_write_disk_secure)
 #if 0
 	/* With security checks enabled, this should fail. */
 	assert(archive_entry_clear(ae) != NULL);
-	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_symlink/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
+	snprintf(tmp, sizeof(tmp), "%s/%s/%s", tmpdir, lname, fname);
+	archive_entry_copy_pathname(ae, tmp);
 	archive_entry_set_mode(ae, S_IFREG | 0777);
 	archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS);
 	failure("Extracting a file through an absolute symlink should fail here.");
 	assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
 	archive_entry_free(ae);
-	assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
-	assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink"));
-	unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
+	assertFileNotExists(tmp);
+	snprintf(tmp, sizeof(tmp), "%s/%s", tmpdir, lname);
+	assert(0 == unlink(tmp));
+	snprintf(tmp, sizeof(tmp), "%s/%s", tmpdir, fname);
+	unlink(tmp);
 #endif
 
 	/* Create another link. */
@@ -230,23 +246,24 @@ DEFINE_TEST(test_write_disk_secure)
 	 * extract an absolute path.
 	 */
 	assert((ae = archive_entry_new()) != NULL);
-	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+	snprintf(tmp, sizeof(tmp), "%s/%s", tmpdir, pname);
+	archive_entry_copy_pathname(ae, tmp);
 	archive_entry_set_mode(ae, S_IFREG | 0777);
 	assert(0 == archive_write_header(a, ae));
 	assert(0 == archive_write_finish_entry(a));
-	assertFileExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
-	assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"));
+	assertFileExists(tmp);
+	assert(0 == unlink(tmp));
 
 	/* But with security checks enabled, this should fail. */
 	assert(archive_entry_clear(ae) != NULL);
-	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+	archive_entry_copy_pathname(ae, tmp);
 	archive_entry_set_mode(ae, S_IFREG | 0777);
 	archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS);
 	failure("Extracting an absolute path should fail here.");
 	assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
 	archive_entry_free(ae);
 	assert(0 == archive_write_finish_entry(a));
-	assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+	assertFileNotExists(tmp);
 
 	assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 

Index: src/external/bsd/libarchive/dist/tar/write.c
diff -u src/external/bsd/libarchive/dist/tar/write.c:1.1.1.5 src/external/bsd/libarchive/dist/tar/write.c:1.1.1.5.2.1
--- src/external/bsd/libarchive/dist/tar/write.c:1.1.1.5	Wed Jul 24 13:50:41 2019
+++ src/external/bsd/libarchive/dist/tar/write.c	Mon Jun 21 15:41:38 2021
@@ -798,7 +798,9 @@ copy_file_data_block(struct bsdtar *bsdt
 		progress += bytes_written;
 	}
 	if (r < ARCHIVE_WARN) {
-		lafe_warnc(archive_errno(a), "%s", archive_error_string(a));
+		const char *s = archive_error_string(a);
+		if (s)
+			lafe_warnc(archive_errno(a), "%s", s);
 		return (-1);
 	}
 	return (0);
@@ -971,16 +973,15 @@ write_entry(struct bsdtar *bsdtar, struc
 
 	e = archive_write_header(a, entry);
 	if (e != ARCHIVE_OK) {
-		if (bsdtar->verbose > 1) {
+		if (bsdtar->verbose > 0) {
 			safe_fprintf(stderr, "a ");
 			list_item_verbose(bsdtar, stderr, entry);
 			lafe_warnc(0, ": %s", archive_error_string(a));
-		} else if (bsdtar->verbose > 0) {
+		} else {
 			lafe_warnc(0, "%s: %s",
 			    archive_entry_pathname(entry),
 			    archive_error_string(a));
-		} else
-			fprintf(stderr, ": %s", archive_error_string(a));
+		}
 	}
 
 	if (e == ARCHIVE_FATAL)

Index: src/external/bsd/libarchive/dist/tar/test/test_basic.c
diff -u src/external/bsd/libarchive/dist/tar/test/test_basic.c:1.1.1.4 src/external/bsd/libarchive/dist/tar/test/test_basic.c:1.1.1.4.2.1
--- src/external/bsd/libarchive/dist/tar/test/test_basic.c:1.1.1.4	Wed Jul 24 13:50:41 2019
+++ src/external/bsd/libarchive/dist/tar/test/test_basic.c	Mon Jun 21 15:41:38 2021
@@ -96,7 +96,7 @@ run_tar(const char *target, const char *
 
 	/* Use the tar program to create an archive. */
 	r = systemf("%s cf - %s %s >%s/archive 2>%s/pack.err", testprog, pack_options, flist, target, target);
-	failure("Error invoking %s cf -", testprog, pack_options);
+	failure("Error invoking %s cf -%s", testprog, pack_options);
 	assertEqualInt(r, 0);
 
 	assertChdir(target);

Index: src/external/bsd/libarchive/dist/tar/test/test_copy.c
diff -u src/external/bsd/libarchive/dist/tar/test/test_copy.c:1.1.1.4.2.1 src/external/bsd/libarchive/dist/tar/test/test_copy.c:1.1.1.4.2.2
--- src/external/bsd/libarchive/dist/tar/test/test_copy.c:1.1.1.4.2.1	Tue Jan 21 15:48:52 2020
+++ src/external/bsd/libarchive/dist/tar/test/test_copy.c	Mon Jun 21 15:41:38 2021
@@ -256,13 +256,13 @@ verify_tree(size_t limit)
 					continue;
 				switch(dp[0]) {
 				case 'l': case 'm': case 'd':
-					failure("strlen(p)=%d", strlen(p));
+					failure("strlen(p)=%zu", strlen(p));
 					assert(strlen(p) < limit);
 					assertEqualString(p,
 					    filenames[strlen(p)]);
 					break;
 				case 'f': case 's':
-					failure("strlen(p)=%d", strlen(p));
+					failure("strlen(p)=%zu", strlen(p));
 					assert(strlen(p) < limit + 1);
 					assertEqualString(p,
 					    filenames[strlen(p)]);

Index: src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c
diff -u src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c:1.1.1.1 src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c:1.1.1.1.18.1
--- src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c:1.1.1.1	Thu Apr 20 12:55:32 2017
+++ src/external/bsd/libarchive/dist/tar/test/test_option_C_upper.c	Mon Jun 21 15:41:38 2021
@@ -117,7 +117,7 @@ DEFINE_TEST(test_option_C_upper)
 	assertMakeDir("test6", 0755);
 	assertChdir("test6");
 	r = systemf("%s -cf archive.tar -C XXX -C ../d1 file1 2>write.err",
-	    testprog, testworkdir);
+	    testprog);
 	assert(r != 0);
 	assertNonEmptyFile("write.err");
 	assertEqualInt(0,

Index: src/external/bsd/libarchive/dist/tar/test/test_option_s.c
diff -u src/external/bsd/libarchive/dist/tar/test/test_option_s.c:1.1.1.3 src/external/bsd/libarchive/dist/tar/test/test_option_s.c:1.1.1.3.2.1
--- src/external/bsd/libarchive/dist/tar/test/test_option_s.c:1.1.1.3	Wed Jul 24 13:50:41 2019
+++ src/external/bsd/libarchive/dist/tar/test/test_option_s.c	Mon Jun 21 15:41:38 2021
@@ -92,10 +92,8 @@ DEFINE_TEST(test_option_s)
 	 * Test 5: Name-switching substitutions when extracting archive.
 	 */
 	assertMakeDir("test5", 0755);
-	systemf("%s -cf test5.tar in/d1/foo in/d1/bar",
-	    testprog, testprog);
-	systemf("%s -xf test5.tar -s /foo/bar/ -s }bar}foo} -C test5",
-	    testprog, testprog);
+	systemf("%s -cf test5.tar in/d1/foo in/d1/bar", testprog);
+	systemf("%s -xf test5.tar -s /foo/bar/ -s }bar}foo} -C test5", testprog);
 	assertFileContents("foo", 3, "test5/in/d1/bar");
 	assertFileContents("bar", 3, "test5/in/d1/foo");
 

Index: src/external/bsd/libarchive/dist/test_utils/test_common.h
diff -u src/external/bsd/libarchive/dist/test_utils/test_common.h:1.1.2.2 src/external/bsd/libarchive/dist/test_utils/test_common.h:1.1.2.3
--- src/external/bsd/libarchive/dist/test_utils/test_common.h:1.1.2.2	Tue Jan 21 15:48:52 2020
+++ src/external/bsd/libarchive/dist/test_utils/test_common.h	Mon Jun 21 15:41:38 2021
@@ -115,6 +115,13 @@
 #pragma warn -8068	/* Constant out of range in comparison. */
 #endif
 
+#if defined(__GNUC__) && (__GNUC__ > 2 || \
+			  (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
+#define	__LA_PRINTFLIKE(f,a)	__attribute__((__format__(__printf__, f, a)))
+#else
+#define	__LA_PRINTFLIKE(f,a)
+#endif
+
 /* Haiku OS and QNX */
 #if defined(__HAIKU__) || defined(__QNXNTO__)
 /* Haiku and QNX have typedefs in stdint.h (needed for int64_t) */
@@ -266,7 +273,7 @@
   skipping_setup(__FILE__, __LINE__);test_skipping
 
 /* Function declarations.  These are defined in test_utility.c. */
-void failure(const char *fmt, ...);
+void failure(const char *fmt, ...) __LA_PRINTFLIKE(1, 2);
 int assertion_assert(const char *, int, int, const char *, void *);
 int assertion_chdir(const char *, int, const char *);
 int assertion_compare_fflags(const char *, int, const char *, const char *,
@@ -309,10 +316,10 @@ int assertion_utimes(const char *, int, 
 int assertion_version(const char*, int, const char *, const char *);
 
 void skipping_setup(const char *, int);
-void test_skipping(const char *fmt, ...);
+void test_skipping(const char *fmt, ...) __LA_PRINTFLIKE(1, 2);
 
 /* Like sprintf, then system() */
-int systemf(const char * fmt, ...);
+int systemf(const char *fmt, ...) __LA_PRINTFLIKE(1, 2);
 
 /* Delay until time() returns a value after this. */
 void sleepUntilAfter(time_t);
@@ -375,7 +382,7 @@ void *sunacl_get(int cmd, int *aclcnt, i
 
 /* Suck file into string allocated via malloc(). Call free() when done. */
 /* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
-char *slurpfile(size_t *, const char *fmt, ...);
+char *slurpfile(size_t *, const char *fmt, ...) __LA_PRINTFLIKE(2, 3);
 
 /* Dump block of bytes to a file. */
 void dumpfile(const char *filename, void *, size_t);
Index: src/external/bsd/libarchive/dist/test_utils/test_main.c
diff -u src/external/bsd/libarchive/dist/test_utils/test_main.c:1.1.2.2 src/external/bsd/libarchive/dist/test_utils/test_main.c:1.1.2.3
--- src/external/bsd/libarchive/dist/test_utils/test_main.c:1.1.2.2	Tue Jan 21 15:48:52 2020
+++ src/external/bsd/libarchive/dist/test_utils/test_main.c	Mon Jun 21 15:41:38 2021
@@ -388,7 +388,7 @@ static const char *refdir;
  */
 static int log_console = 0;
 static FILE *logfile;
-static void
+static void __LA_PRINTFLIKE(1, 0)
 vlogprintf(const char *fmt, va_list ap)
 {
 #ifdef va_copy
@@ -406,7 +406,7 @@ vlogprintf(const char *fmt, va_list ap)
 #endif
 }
 
-static void
+static void __LA_PRINTFLIKE(1, 2)
 logprintf(const char *fmt, ...)
 {
 	va_list ap;
@@ -478,7 +478,7 @@ static struct line {
 const char *failed_filename;
 
 /* Count this failure, setup up log destination and handle initial report. */
-static void
+static void __LA_PRINTFLIKE(3, 4)
 failure_start(const char *filename, int line, const char *fmt, ...)
 {
 	va_list ap;
@@ -751,7 +751,7 @@ static void strdump(const char *e, const
 		logprintf("]");
 		logprintf(" (count %d", cnt);
 		if (n < 0) {
-			logprintf(",unknown %d bytes", len);
+			logprintf(",unknown %zu bytes", len);
 		}
 		logprintf(")");
 
@@ -1167,7 +1167,7 @@ assertion_text_file_contents(const char 
 	logprintf("  file=\"%s\"\n", fn);
 	if (n > 0) {
 		hexdump(contents, buff, n, 0);
-		logprintf("  expected\n", fn);
+		logprintf("  expected\n");
 		hexdump(buff, contents, s, 0);
 	} else {
 		logprintf("  File empty, contents should be:\n");
@@ -1497,7 +1497,7 @@ assertion_file_time(const char *file, in
 		}
 	} else if (filet != t || filet_nsec != nsec) {
 		failure_start(file, line,
-		    "File %s has %ctime %lld.%09lld, expected %lld.%09lld",
+		    "File %s has %ctime %lld.%09lld, expected %ld.%09ld",
 		    pathname, type, filet, filet_nsec, t, nsec);
 		failure_finish(NULL);
 		return (0);
@@ -3271,7 +3271,7 @@ assertion_entry_set_acls(const char *fil
 		    acls[i].qual, acls[i].name);
 		if (r != 0) {
 			ret = 1;
-			failure_start(file, line, "type=%#010x, ",
+			failure_start(file, line, "type=%#010x, "
 			    "permset=%#010x, tag=%d, qual=%d name=%s",
 			    acls[i].type, acls[i].permset, acls[i].tag,
 			    acls[i].qual, acls[i].name);

Reply via email to