Update vendor/libarchive/dist to git 0cda60af13e709e670af90553b2271bf194e7ccd
Relevant vendor changes: PR #1019: Add allocation check for the zip_entry struct Oss-Fuzz #10192: Handle whitespace-only ACL fields correctly
This commit is contained in:
parent
f63fed4c85
commit
343ccbae73
@ -15,7 +15,7 @@ endif()
|
||||
# RelWithDebInfo : Release build with Debug Info
|
||||
# MinSizeRel : Release Min Size build
|
||||
IF(NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build Type" FORCE)
|
||||
SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Type" FORCE)
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE)
|
||||
# Set a value type to properly display CMAKE_BUILD_TYPE on GUI if the
|
||||
# value type is "UNINITIALIZED".
|
||||
|
@ -78,7 +78,6 @@ Currently, the library automatically detects and reads the following fomats:
|
||||
* POSIX pax interchange format
|
||||
* POSIX octet-oriented cpio
|
||||
* SVR4 ASCII cpio
|
||||
* POSIX octet-oriented cpio
|
||||
* Binary cpio (big-endian or little-endian)
|
||||
* ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions)
|
||||
* ZIP archives (with uncompressed or "deflate" compressed entries, including support for encrypted Zip archives)
|
||||
|
@ -1 +1 @@
|
||||
3003003
|
||||
3003004dev
|
||||
|
11
configure.ac
11
configure.ac
@ -4,8 +4,8 @@ dnl First, define all of the version numbers up front.
|
||||
dnl In particular, this allows the version macro to be used in AC_INIT
|
||||
|
||||
dnl These first two version numbers are updated automatically on each release.
|
||||
m4_define([LIBARCHIVE_VERSION_S],[3.3.3])
|
||||
m4_define([LIBARCHIVE_VERSION_N],[3003003])
|
||||
m4_define([LIBARCHIVE_VERSION_S],[3.3.4dev])
|
||||
m4_define([LIBARCHIVE_VERSION_N],[3003004])
|
||||
|
||||
dnl bsdtar and bsdcpio versioning tracks libarchive
|
||||
m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
|
||||
@ -1153,12 +1153,7 @@ if test "x$with_openssl" != "xno"; then
|
||||
CRYPTO_CHECK(SHA256, OPENSSL, sha256)
|
||||
CRYPTO_CHECK(SHA384, OPENSSL, sha384)
|
||||
CRYPTO_CHECK(SHA512, OPENSSL, sha512)
|
||||
if test "x$found_OPENSSL" != "xyes"; then
|
||||
LIBS=$saved_LIBS
|
||||
else
|
||||
AC_CHECK_FUNCS([PKCS5_PBKDF2_HMAC_SHA1])
|
||||
fi
|
||||
AC_CHECK_LIB(crypto,EVP_CIPHER_CTX_init)
|
||||
AC_CHECK_FUNCS([PKCS5_PBKDF2_HMAC_SHA1])
|
||||
fi
|
||||
|
||||
# Probe libmd AFTER OpenSSL/libcrypto.
|
||||
|
@ -94,9 +94,9 @@ libarchive_src_files := libarchive/archive_acl.c \
|
||||
libarchive/archive_string.c \
|
||||
libarchive/archive_string_sprintf.c \
|
||||
libarchive/archive_util.c \
|
||||
libarchive/archive_version_details.c \
|
||||
libarchive/archive_virtual.c \
|
||||
libarchive/archive_write.c \
|
||||
libarchive/archive_write_disk_acl.c \
|
||||
libarchive/archive_write_disk_posix.c \
|
||||
libarchive/archive_write_disk_set_standard_lookup.c \
|
||||
libarchive/archive_write_open_fd.c \
|
||||
|
@ -36,7 +36,7 @@
|
||||
* assert that ARCHIVE_VERSION_NUMBER >= 2012108.
|
||||
*/
|
||||
/* Note: Compiler will complain if this does not match archive_entry.h! */
|
||||
#define ARCHIVE_VERSION_NUMBER 3003003
|
||||
#define ARCHIVE_VERSION_NUMBER 3003004
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <stddef.h> /* for wchar_t */
|
||||
@ -155,7 +155,7 @@ __LA_DECL int archive_version_number(void);
|
||||
/*
|
||||
* Textual name/version of the library, useful for version displays.
|
||||
*/
|
||||
#define ARCHIVE_VERSION_ONLY_STRING "3.3.3"
|
||||
#define ARCHIVE_VERSION_ONLY_STRING "3.3.4dev"
|
||||
#define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
|
||||
__LA_DECL const char * archive_version_string(void);
|
||||
|
||||
|
@ -2058,6 +2058,12 @@ next_field(const char **p, const char **start,
|
||||
}
|
||||
*sep = **p;
|
||||
|
||||
/* If the field is only whitespace, bail out now. */
|
||||
if (**p == '\0') {
|
||||
*end = *p;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Trim trailing whitespace to locate end of field. */
|
||||
*end = *p - 1;
|
||||
while (**end == ' ' || **end == '\t' || **end == '\n') {
|
||||
|
@ -316,7 +316,14 @@ aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
|
||||
memcpy(ctx->key, key, key_len);
|
||||
memset(ctx->nonce, 0, sizeof(ctx->nonce));
|
||||
ctx->encr_pos = AES_BLOCK_SIZE;
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
if (!EVP_CIPHER_CTX_reset(ctx->ctx)) {
|
||||
EVP_CIPHER_CTX_free(ctx->ctx);
|
||||
ctx->ctx = NULL;
|
||||
}
|
||||
#else
|
||||
EVP_CIPHER_CTX_init(ctx->ctx);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
#define ARCHIVE_ENTRY_H_INCLUDED
|
||||
|
||||
/* Note: Compiler will complain if this does not match archive.h! */
|
||||
#define ARCHIVE_VERSION_NUMBER 3003003
|
||||
#define ARCHIVE_VERSION_NUMBER 3003004
|
||||
|
||||
/*
|
||||
* Note: archive_entry.h is for use outside of libarchive; the
|
||||
|
@ -459,6 +459,7 @@ ar_parse_common_header(struct ar *ar, struct archive_entry *entry,
|
||||
uint64_t n;
|
||||
|
||||
/* Copy remaining header */
|
||||
archive_entry_set_filetype(entry, AE_IFREG);
|
||||
archive_entry_set_mtime(entry,
|
||||
(time_t)ar_atol10(h + AR_date_offset, AR_date_size), 0L);
|
||||
archive_entry_set_uid(entry,
|
||||
|
@ -2708,6 +2708,11 @@ slurp_central_directory(struct archive_read *a, struct zip *zip)
|
||||
return ARCHIVE_FATAL;
|
||||
|
||||
zip_entry = calloc(1, sizeof(struct zip_entry));
|
||||
if (zip_entry == NULL) {
|
||||
archive_set_error(&a->archive, ENOMEM,
|
||||
"Can't allocate zip entry");
|
||||
return ARCHIVE_FATAL;
|
||||
}
|
||||
zip_entry->next = zip->zip_entries;
|
||||
zip_entry->flags |= LA_FROM_CENTRAL_DIRECTORY;
|
||||
zip->zip_entries = zip_entry;
|
||||
|
@ -422,6 +422,7 @@ verify_sparse_file(struct archive *a, const char *path,
|
||||
assert(sparse->type == END);
|
||||
assertEqualInt(expected_offset, archive_entry_size(ae));
|
||||
|
||||
failure(path);
|
||||
assertEqualInt(holes_seen, expected_holes);
|
||||
|
||||
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
|
||||
@ -457,6 +458,7 @@ verify_sparse_file2(struct archive *a, const char *path,
|
||||
/* Verify the number of holes only, not its offset nor its
|
||||
* length because those alignments are deeply dependence on
|
||||
* its filesystem. */
|
||||
failure(path);
|
||||
assertEqualInt(blocks, archive_entry_sparse_count(ae));
|
||||
archive_entry_free(ae);
|
||||
}
|
||||
|
@ -2166,7 +2166,7 @@ void assertVersion(const char *prog, const char *base)
|
||||
|
||||
/* Skip arbitrary third-party version numbers. */
|
||||
while (s > 0 && (*q == ' ' || *q == '-' || *q == '/' || *q == '.' ||
|
||||
isalnum(*q))) {
|
||||
isalnum((unsigned char)*q))) {
|
||||
++q;
|
||||
--s;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user