diff options
author | Pierre Joye <pajoye@php.net> | 2009-07-19 15:32:09 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2009-07-19 15:32:09 +0000 |
commit | 38bb4c1099482cedd27bb8c78ed5f1749ee955d8 (patch) | |
tree | d10d12e0edfc9ca75ef7a2997c3dfb2d9ebb9040 /ext/zip | |
parent | f031901b1b9d820010aceda6c2301c1064dadadf (diff) | |
download | php-git-38bb4c1099482cedd27bb8c78ed5f1749ee955d8.tar.gz |
- MFB: Fix #48763, create corrupt archive
Diffstat (limited to 'ext/zip')
-rw-r--r-- | ext/zip/lib/zip_close.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c index 7f93cc94e1..bc640c77b2 100644 --- a/ext/zip/lib/zip_close.c +++ b/ext/zip/lib/zip_close.c @@ -175,6 +175,7 @@ zip_close(struct zip *za) de.filename = strdup("-"); de.filename_len = 1; cd->entry[j].filename = "-"; + cd->entry[j].filename_len = 1; } else { de.filename = strdup(za->cdir->entry[i].filename); @@ -195,13 +196,15 @@ zip_close(struct zip *za) error = 1; break; } + memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j])); + if (de.bitflags & ZIP_GPBF_DATA_DESCRIPTOR) { de.crc = za->cdir->entry[i].crc; de.comp_size = za->cdir->entry[i].comp_size; de.uncomp_size = za->cdir->entry[i].uncomp_size; de.bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; + cd->entry[j].bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; } - memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j])); } if (za->entry[i].ch_filename) { |