Skip to content

Commit 9e3508b

Browse files
authored
Fix persistent local flag on filename zend_strings in phar (#17353)
This fixes the nightly failure.
1 parent 5ba2143 commit 9e3508b

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

ext/phar/phar.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,9 @@ static zend_result phar_parse_pharfile(php_stream *fp, char *fname, size_t fname
11821182
}
11831183

11841184
entry.filename = zend_string_init(filename_raw, filename_len, entry.is_persistent);
1185+
if (entry.is_persistent) {
1186+
GC_MAKE_PERSISTENT_LOCAL(entry.filename);
1187+
}
11851188

11861189
PHAR_GET_32(buffer, len);
11871190
if (len > (size_t)(endbuffer - buffer)) {

ext/phar/tar.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch
374374
return FAILURE;
375375
}
376376
entry.filename = zend_string_alloc(entry.uncompressed_filesize, myphar->is_persistent);
377+
if (myphar->is_persistent) {
378+
GC_MAKE_PERSISTENT_LOCAL(entry.filename);
379+
}
377380
ZSTR_VAL(entry.filename)[entry.uncompressed_filesize] = '\0';
378381

379382
read = php_stream_read(fp, ZSTR_VAL(entry.filename), entry.uncompressed_filesize);
@@ -440,6 +443,9 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch
440443
}
441444

442445
entry.filename = zend_string_init(name, filename_len, myphar->is_persistent);
446+
if (myphar->is_persistent) {
447+
GC_MAKE_PERSISTENT_LOCAL(entry.filename);
448+
}
443449
} else if (!last_was_longlink) {
444450
/* calculate strlen, which can be no longer than 100 */
445451
uint32_t filename_len;
@@ -455,6 +461,9 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch
455461
}
456462

457463
entry.filename = zend_string_init(hdr->name, filename_len, myphar->is_persistent);
464+
if (myphar->is_persistent) {
465+
GC_MAKE_PERSISTENT_LOCAL(entry.filename);
466+
}
458467
}
459468
last_was_longlink = 0;
460469

0 commit comments

Comments
 (0)