summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2020-12-13 16:26:37 +0000
committerMartin Matuska <mm@FreeBSD.org>2020-12-13 16:26:37 +0000
commit87c1ec0a31cce6441c52f6101d99482e50aeffba (patch)
tree4427f7224cc11d738e27da996b30bbe782718afe
parentc6e0073a42fff96c559f712897e837120704247f (diff)
parentbcd2ffcdc2bdf4551e249ea3f75de6bbb5bfef02 (diff)
downloadsrc-test2-87c1ec0a31cce6441c52f6101d99482e50aeffba.tar.gz
src-test2-87c1ec0a31cce6441c52f6101d99482e50aeffba.zip
Notes
-rw-r--r--contrib/libarchive/libarchive/archive_read_support_format_mtree.c23
-rw-r--r--contrib/libarchive/libarchive/archive_read_support_format_warc.c4
-rw-r--r--contrib/libarchive/libarchive/archive_read_support_format_zip.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_support.c4
-rw-r--r--lib/libarchive/config_freebsd.h1
5 files changed, 30 insertions, 4 deletions
diff --git a/contrib/libarchive/libarchive/archive_read_support_format_mtree.c b/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
index 02bce867d3e0..669eff55fbfe 100644
--- a/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
+++ b/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
@@ -136,6 +136,9 @@ static int skip(struct archive_read *a);
static int read_header(struct archive_read *,
struct archive_entry *);
static int64_t mtree_atol(char **, int base);
+#ifndef HAVE_STRNLEN
+static size_t mtree_strnlen(const char *, size_t);
+#endif
/*
* There's no standard for TIME_T_MAX/TIME_T_MIN. So we compute them
@@ -187,6 +190,24 @@ get_time_t_min(void)
#endif
}
+#ifdef HAVE_STRNLEN
+#define mtree_strnlen(a,b) strnlen(a,b)
+#else
+static size_t
+mtree_strnlen(const char *p, size_t maxlen)
+{
+ size_t i;
+
+ for (i = 0; i <= maxlen; i++) {
+ if (p[i] == 0)
+ break;
+ }
+ if (i > maxlen)
+ return (-1);/* invalid */
+ return (i);
+}
+#endif
+
static int
archive_read_format_mtree_options(struct archive_read *a,
const char *key, const char *val)
@@ -1540,7 +1561,7 @@ parse_digest(struct archive_read *a, struct archive_entry *entry,
len *= 2;
- if (strnlen(digest, len+1) != len) {
+ if (mtree_strnlen(digest, len+1) != len) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"incorrect digest length, ignoring");
return ARCHIVE_WARN;
diff --git a/contrib/libarchive/libarchive/archive_read_support_format_warc.c b/contrib/libarchive/libarchive/archive_read_support_format_warc.c
index 25c651564d26..27329962d6d1 100644
--- a/contrib/libarchive/libarchive/archive_read_support_format_warc.c
+++ b/contrib/libarchive/libarchive/archive_read_support_format_warc.c
@@ -127,7 +127,7 @@ static int _warc_skip(struct archive_read *a);
static int _warc_rdhdr(struct archive_read *a, struct archive_entry *e);
/* private routines */
-static unsigned int _warc_rdver(const char buf[10], size_t bsz);
+static unsigned int _warc_rdver(const char *buf, size_t bsz);
static unsigned int _warc_rdtyp(const char *buf, size_t bsz);
static warc_string_t _warc_rduri(const char *buf, size_t bsz);
static ssize_t _warc_rdlen(const char *buf, size_t bsz);
@@ -443,7 +443,7 @@ _warc_skip(struct archive_read *a)
static void*
deconst(const void *c)
{
- return (char *)0x1 + (((const char *)c) - (const char *)0x1);
+ return (void *)(uintptr_t)c;
}
static char*
diff --git a/contrib/libarchive/libarchive/archive_read_support_format_zip.c b/contrib/libarchive/libarchive/archive_read_support_format_zip.c
index 5ffc505d8963..e046a9fd150e 100644
--- a/contrib/libarchive/libarchive/archive_read_support_format_zip.c
+++ b/contrib/libarchive/libarchive/archive_read_support_format_zip.c
@@ -899,6 +899,7 @@ process_extra(struct archive_read *a, struct archive_entry *entry,
return ARCHIVE_OK;
}
+#if HAVE_LZMA_H && HAVE_LIBLZMA
/*
* Auxiliary function to uncompress data chunk from zipx archive
* (zip with lzma compression).
@@ -971,6 +972,7 @@ zipx_lzma_uncompress_buffer(const char *compressed_buffer,
free(lzma_alone_compressed_buffer);
return status;
}
+#endif
/*
* Assumes file pointer is at beginning of local file header.
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_support.c b/contrib/libarchive/libarchive/test/test_archive_read_support.c
index 6d213c409bf2..c6eb9346c627 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_support.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_support.c
@@ -126,7 +126,9 @@ DEFINE_TEST(test_archive_read_support)
ARCHIVE_FORMAT_WARC,
ARCHIVE_FORMAT_RAR_V5,
};
- for (unsigned i = 0; i < sizeof(format_codes) / sizeof(int); i++) {
+ unsigned int i;
+
+ for (i = 0; i < sizeof(format_codes) / sizeof(int); i++) {
format_code = format_codes[i];
test_filter_or_format(format_code_enabler);
test_filter_or_format(format_code_setter);
diff --git a/lib/libarchive/config_freebsd.h b/lib/libarchive/config_freebsd.h
index e26ff8b1faf2..d4973d95a592 100644
--- a/lib/libarchive/config_freebsd.h
+++ b/lib/libarchive/config_freebsd.h
@@ -183,6 +183,7 @@
#define HAVE_STRFTIME 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
+#define HAVE_STRNLEN 1
#define HAVE_STRRCHR 1
#define HAVE_STRUCT_STATFS_F_NAMEMAX 1
#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1