if ((h = __archive_read_ahead(a, 4, NULL)) == NULL)
return (ARCHIVE_FATAL);
- if (memcmp(h, "PK\003\004", 4) != 0) {
- archive_set_error(&a->archive, -1, "Damaged Zip archive");
- return ARCHIVE_FATAL;
- }
-
r = zip_read_local_file_header(a, entry, zip);
return (r);
}
archive_read_format_zip_streamable_read_header(struct archive_read *a,
struct archive_entry *entry)
{
- const void *h;
const char *signature;
struct zip *zip;
int r = ARCHIVE_OK, r1;
zip->entry_uncompressed_bytes_read = 0;
zip->entry_compressed_bytes_read = 0;
zip->entry_crc32 = crc32(0, NULL, 0);
- if ((h = __archive_read_ahead(a, 4, NULL)) == NULL)
+ if ((signature = __archive_read_ahead(a, 4, NULL)) == NULL)
return (ARCHIVE_FATAL);
- signature = (const char *)h;
-
/* If we don't see a PK signature here, scan forward. */
if (signature[0] != 'P' || signature[1] != 'K') {
r = search_next_signature(a);
"Unable to find next valid PK marker");
return (ARCHIVE_FATAL);
}
- if ((h = __archive_read_ahead(a, 4, NULL)) == NULL)
+ if ((signature = __archive_read_ahead(a, 4, NULL)) == NULL)
return (ARCHIVE_FATAL);
- signature = (const char *)h;
}
/*
*/
if (signature[2] == '0' && signature[3] == '0') {
__archive_read_consume(a, 4);
- if ((h = __archive_read_ahead(a, 4, NULL)) == NULL)
+ if ((signature = __archive_read_ahead(a, 4, NULL)) == NULL)
return (ARCHIVE_FATAL);
- signature = (const char *)h;
if (signature[0] != 'P' || signature[1] != 'K') {
archive_set_error(&a->archive,
ARCHIVE_ERRNO_FILE_FORMAT,
}
}
+/*
+ * Assumes file pointer is at beginning of local file header.
+ */
static int
zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
struct zip *zip)
return (ARCHIVE_FATAL);
}
+ if (memcmp(p, "PK\003\004", 4) != 0) {
+ archive_set_error(&a->archive, -1, "Damaged Zip archive");
+ return ARCHIVE_FATAL;
+ }
version = p[4];
zip_entry->system = p[5];
zip_entry->flags = archive_le16dec(p + 6);