diff --git a/libmineziper/include/libmineziper_zip.h b/libmineziper/include/libmineziper_zip.h index 9bfa5e1..dd680ff 100644 --- a/libmineziper/include/libmineziper_zip.h +++ b/libmineziper/include/libmineziper_zip.h @@ -25,8 +25,8 @@ typedef struct LFH int crc32; int compressed_size; int uncompressed_size; - short filename_length; - short extraf_length; + unsigned short filename_length; + unsigned short extraf_length; } LFH; typedef struct CDH @@ -41,9 +41,9 @@ typedef struct CDH int crc32; int compressed_size; int uncompressed_size; - short filename_length; - short extraf_length; - short file_comment_length; + unsigned short filename_length; + unsigned short extraf_length; + unsigned short file_comment_length; short disk_number_start; short internal_file_attributes; int external_file_attributes; diff --git a/libmineziper/src/libmineziper_zip.c b/libmineziper/src/libmineziper_zip.c index 63c2022..7d6f892 100644 --- a/libmineziper/src/libmineziper_zip.c +++ b/libmineziper/src/libmineziper_zip.c @@ -62,8 +62,9 @@ void get_cdh(zip* z) z->lfh_off[i] = cdh->off_lfh; z->cdh_filename_length[i] = cdh->filename_length; - cdh = (CDH*) (((char*) cdh) + sizeof(CDH) + cdh->filename_length + - cdh->extraf_length + cdh->file_comment_length); + unsigned short len = cdh->filename_length + cdh->extraf_length + + cdh->file_comment_length; + cdh = (CDH*) (((char*) cdh) + sizeof(CDH) + len); } }