Skip to content

Commit 0a69e14

Browse files
nielsdosGirgias
authored andcommitted
Avoid copying request strings in phar_parse_pharfile()
1 parent 9e3508b commit 0a69e14

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

ext/phar/phar.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,14 +1229,15 @@ static zend_result phar_parse_pharfile(php_stream *fp, char *fname, size_t fname
12291229
/* if signature matched, no need to check CRC32 for each file */
12301230
entry.is_crc_checked = (manifest_flags & PHAR_HDR_SIGNATURE ? 1 : 0);
12311231
phar_set_inode(&entry);
1232-
// TODO: avoid copy
12331232
if (mydata->is_persistent) {
12341233
str = zend_string_init_interned(ZSTR_VAL(entry.filename), ZSTR_LEN(entry.filename), 1);
12351234
} else {
1236-
str = zend_string_init(ZSTR_VAL(entry.filename), ZSTR_LEN(entry.filename), 0);
1235+
str = entry.filename;
12371236
}
12381237
zend_hash_add_mem(&mydata->manifest, str, (void*)&entry, sizeof(phar_entry_info));
1239-
zend_string_release(str);
1238+
if (mydata->is_persistent) {
1239+
zend_string_release(str);
1240+
}
12401241
}
12411242

12421243
snprintf(mydata->version, sizeof(mydata->version), "%u.%u.%u", manifest_ver >> 12, (manifest_ver >> 8) & 0xF, (manifest_ver >> 4) & 0xF);

0 commit comments

Comments
 (0)