summaryrefslogtreecommitdiff
path: root/ext/zip
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2009-07-19 15:32:09 +0000
committerPierre Joye <pajoye@php.net>2009-07-19 15:32:09 +0000
commit38bb4c1099482cedd27bb8c78ed5f1749ee955d8 (patch)
treed10d12e0edfc9ca75ef7a2997c3dfb2d9ebb9040 /ext/zip
parentf031901b1b9d820010aceda6c2301c1064dadadf (diff)
downloadphp-git-38bb4c1099482cedd27bb8c78ed5f1749ee955d8.tar.gz
- MFB: Fix #48763, create corrupt archive
Diffstat (limited to 'ext/zip')
-rw-r--r--ext/zip/lib/zip_close.c5
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) {