From: Pierre Joye Date: Sun, 19 Jul 2009 15:32:51 +0000 (+0000) Subject: - MFB: Fix #48763, create corrupt archive X-Git-Tag: php-5.4.0alpha1~191^2~3056 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f57aa249b4d7acc87fa301d663eb5352f327809;p=php - MFB: Fix #48763, create corrupt archive --- diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c index d9fc6eea43..56adcc75d4 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; - } - memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j])); + cd->entry[j].bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; + } } if (za->entry[i].ch_filename) {