summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2007-02-05 16:30:40 +0000
committercperciva <cperciva@FreeBSD.org>2007-02-05 16:30:40 +0000
commit41a7b3c7b0b73a68f39b8053db70eae7a6a23cb1 (patch)
treed7a37d18f40d9c8c9743d97f9c05252b930537e9 /lib
parent94de0f0fd023089743dfde41f9c02d55e6136af2 (diff)
downloadFreeBSD-src-41a7b3c7b0b73a68f39b8053db70eae7a6a23cb1.zip
FreeBSD-src-41a7b3c7b0b73a68f39b8053db70eae7a6a23cb1.tar.gz
If (a == NULL), don't dereference (a) to record an error message. [1]
Fallout from changing the skip API to use off_t instead of size_t: Print the skip length using %jd and cast to (intmax_t) instead of %d / (int), and if ARCHIVE_API_VERSION >= 2, allow the client skipper to be called for requests longer than SSIZE_MAX. [2] Approved by: kientzle Pointy hats to: kientzle [1], cperciva [2] MFC after: 3 days
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_read.c4
-rw-r--r--lib/libarchive/archive_read_support_compression_none.c7
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/libarchive/archive_read.c b/lib/libarchive/archive_read.c
index c24f139..8574483 100644
--- a/lib/libarchive/archive_read.c
+++ b/lib/libarchive/archive_read.c
@@ -65,10 +65,8 @@ archive_read_new(void)
unsigned char *nulls;
a = (struct archive *)malloc(sizeof(*a));
- if (a == NULL) {
- archive_set_error(a, ENOMEM, "Can't allocate archive object");
+ if (a == NULL)
return (NULL);
- }
memset(a, 0, sizeof(*a));
a->user_uid = geteuid();
diff --git a/lib/libarchive/archive_read_support_compression_none.c b/lib/libarchive/archive_read_support_compression_none.c
index fe76310..1109488 100644
--- a/lib/libarchive/archive_read_support_compression_none.c
+++ b/lib/libarchive/archive_read_support_compression_none.c
@@ -301,7 +301,11 @@ archive_decompressor_none_skip(struct archive *a, off_t request)
/*
* If a client_skipper was provided, try that first.
*/
+#if ARCHIVE_API_VERSION < 2
if ((a->client_skipper != NULL) && (request < SSIZE_MAX)) {
+#else
+ if (a->client_skipper != NULL) {
+#endif
bytes_skipped = (a->client_skipper)(a, a->client_data,
request);
if (bytes_skipped < 0) { /* error */
@@ -333,7 +337,8 @@ archive_decompressor_none_skip(struct archive *a, off_t request)
if (bytes_read == 0) {
/* We hit EOF before we satisfied the skip request. */
archive_set_error(a, ARCHIVE_ERRNO_MISC,
- "Truncated input file (need to skip %d bytes)", (int)request);
+ "Truncated input file (need to skip %jd bytes)",
+ (intmax_t)request);
return (ARCHIVE_FATAL);
}
assert(bytes_read >= 0); /* precondition for cast below */
OpenPOWER on IntegriCloud