Skip to content

Commit

Permalink
parse_root_dir: Verify size of extra obtained
Browse files Browse the repository at this point in the history
* Fix the issue #164 where extra_ptr could be alocated without enough
  bytes to check the magic value.

Signed-off-by: vlefebvre <valentin.lefebvre@suse.com>
  • Loading branch information
keentux committed Aug 6, 2024
1 parent c862f96 commit 550e30e
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion zzip/zip.c
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,8 @@ __zzip_parse_root_directory(int fd, struct _disk_trailer* trailer, struct zzip_d
hdr->d_namlen = u_namlen;

/* looking for ZIP64 extras when csize on intmax */
if (u_extras && (hdr->d_csize & 0xFFFFu == 0xFFFFu)) {
if (u_extras >= __sizeof(struct zzip_extra_zip64) &&
(hdr->d_csize & 0xFFFFu == 0xFFFFu)) {
DBG3("%i extras bytes (%i)", u_extras, sizeof(struct zzip_extra_zip64));
zzip_off64_t zz_extras = zz_offset + sizeof(*d) + u_namlen;
zzip_byte_t* extras_ptr;
Expand Down

0 comments on commit 550e30e

Please sign in to comment.