diff options
author | Jeff Sturm <jeff.sturm@commerceone.com> | 2001-01-29 08:43:46 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2001-01-29 00:43:46 -0800 |
commit | 7be00c496f17724614118d79e6b56ccf4f135007 (patch) | |
tree | b3bb87a6746fe2ddd3bf24b0bf009a09b73e11b6 /gcc | |
parent | f2d1f0ba552e043b985396f93360f1b72d9d4b67 (diff) | |
download | gcc-7be00c496f17724614118d79e6b56ccf4f135007.zip gcc-7be00c496f17724614118d79e6b56ccf4f135007.tar.gz gcc-7be00c496f17724614118d79e6b56ccf4f135007.tar.bz2 |
zextract.c (read_zip_archive): Read file_offset before writing zipd and consequently clobbering the header...
2000-01-24 Jeff Sturm <jeff.sturm@commerceone.com>
* zextract.c (read_zip_archive): Read file_offset before writing
zipd and consequently clobbering the header contents.
(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg02129.html)
From-SVN: r39328
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/zextract.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5a60bf9..387e516 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2000-01-24 Jeff Sturm <jeff.sturm@commerceone.com> + + * zextract.c (read_zip_archive): Read file_offset before writing + zipd and consequently clobbering the header contents. + 2001-01-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * Make-lang.in: Remove all dependencies on defaults.h. diff --git a/gcc/java/zextract.c b/gcc/java/zextract.c index 2226eea..3985cd9 100644 --- a/gcc/java/zextract.c +++ b/gcc/java/zextract.c @@ -323,6 +323,7 @@ read_zip_archive (zipf) long uncompressed_size = makelong (&dir_ptr[4+C_UNCOMPRESSED_SIZE]); long filename_length = makeword (&dir_ptr[4+C_FILENAME_LENGTH]); long extra_field_length = makeword (&dir_ptr[4+C_EXTRA_FIELD_LENGTH]); + long file_offset = makelong (&dir_ptr[4+C_RELATIVE_OFFSET_LOCAL_HEADER]); int unpadded_direntry_length; if ((dir_ptr-zipf->central_directory)+filename_length+CREC_SIZE+4>zipf->dir_size) return -1; @@ -337,8 +338,7 @@ read_zip_archive (zipf) #else #define DIR_ALIGN sizeof(long) #endif - zipd->filestart = find_zip_file_start (zipf->fd, - makelong (&dir_ptr[4+C_RELATIVE_OFFSET_LOCAL_HEADER])); + zipd->filestart = find_zip_file_start (zipf->fd, file_offset); zipd->filename_offset = CREC_SIZE+4 - dir_last_pad; unpadded_direntry_length = zipd->filename_offset + zipd->filename_length + extra_field_length; |