From: Pierre Joye Date: Sun, 19 Jul 2009 15:31:05 +0000 (+0000) Subject: - Fix #48763, create corrupt archive X-Git-Tag: php-5.2.11RC1~144 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1d16a525a536e4f47a7269497bcf1af61c9ebb20;p=php - Fix #48763, create corrupt archive --- 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) {