aboutsummaryrefslogtreecommitdiff
path: root/lib/libarchive/archive_read_support_format_zip.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2007-12-30 04:58:22 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2007-12-30 04:58:22 +0000
commit9dd49f960f9b30644843e2f2b41bc1579d0aeba3 (patch)
tree743c28601a2502c30676ab2adfbbb665fa3f38b7 /lib/libarchive/archive_read_support_format_zip.c
parent79386ec7dbd8944a323eb6f31d6de310be74a09c (diff)
Notes
Diffstat (limited to 'lib/libarchive/archive_read_support_format_zip.c')
-rw-r--r--lib/libarchive/archive_read_support_format_zip.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/libarchive/archive_read_support_format_zip.c b/lib/libarchive/archive_read_support_format_zip.c
index e9976779f407..52392cc75ef6 100644
--- a/lib/libarchive/archive_read_support_format_zip.c
+++ b/lib/libarchive/archive_read_support_format_zip.c
@@ -179,18 +179,19 @@ archive_read_format_zip_bid(struct archive_read *a)
return (-1);
p = (const char *)h;
+ /*
+ * Bid of 30 here is: 16 bits for "PK",
+ * next 16-bit field has four options (-2 bits).
+ * 16 + 16-2 = 30.
+ */
if (p[0] == 'P' && p[1] == 'K') {
- bid += 16;
- if (p[2] == '\001' && p[3] == '\002')
- bid += 16;
- else if (p[2] == '\003' && p[3] == '\004')
- bid += 16;
- else if (p[2] == '\005' && p[3] == '\006')
- bid += 16;
- else if (p[2] == '\007' && p[3] == '\010')
- bid += 16;
+ if ((p[2] == '\001' && p[3] == '\002')
+ || (p[2] == '\003' && p[3] == '\004')
+ || (p[2] == '\005' && p[3] == '\006')
+ || (p[2] == '\007' && p[3] == '\010'))
+ return (30);
}
- return (bid);
+ return (0);
}
static int
@@ -765,8 +766,8 @@ process_extra(const void* extra, struct zip* zip)
if (flags & 0x01)
{
#ifdef DEBUG
- fprintf(stderr, "mtime: %d -> %d\n",
- zip->mtime, i4(p + offset));
+ fprintf(stderr, "mtime: %lld -> %d\n",
+ (long long)zip->mtime, i4(p + offset));
#endif
if (datasize < 4)
break;