]> granicus.if.org Git - php/commitdiff
- MFB: Fix #48763, create corrupt archive
authorPierre Joye <pajoye@php.net>
Sun, 19 Jul 2009 15:32:09 +0000 (15:32 +0000)
committerPierre Joye <pajoye@php.net>
Sun, 19 Jul 2009 15:32:09 +0000 (15:32 +0000)
ext/zip/lib/zip_close.c

index 7f93cc94e16b426d85de481e4c1bf09825e30e08..bc640c77b21bcb413fca7eb4c7dd88e8d4a3414a 100644 (file)
@@ -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) {