Skip to content

Commit 20b0ff7

Browse files
authored
ext/phar: refactor phar_get_or_create_entry_data() to use a zend_string* for fname (#21854)
1 parent 6f1df9e commit 20b0ff7

4 files changed

Lines changed: 9 additions & 9 deletions

File tree

ext/phar/phar_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ void phar_entry_delref(phar_entry_data *idata);
466466

467467
phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, size_t path_len, char **error, bool security);
468468
phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, size_t path_len, char dir, char **error, bool security);
469-
ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp);
469+
ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(zend_string *fname, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp);
470470
ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, const char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security);
471471
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_flush_ex(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error);
472472
ZEND_ATTRIBUTE_NONNULL int phar_flush(phar_archive_data *archive, char **error);

ext/phar/phar_object.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1368,7 +1368,7 @@ static phar_entry_data *phar_build_entry_data(zend_string *fname, char *path, si
13681368
timestamp = time(NULL);
13691369
}
13701370

1371-
return phar_get_or_create_entry_data(ZSTR_VAL(fname), ZSTR_LEN(fname), path, path_len, "w+b", 0, error, true, timestamp);
1371+
return phar_get_or_create_entry_data(fname, path, path_len, "w+b", 0, error, true, timestamp);
13721372
}
13731373

13741374
static int phar_build(zend_object_iterator *iter, void *puser) /* {{{ */
@@ -3593,7 +3593,7 @@ static void phar_add_file(phar_archive_data **pphar, zend_string *file_name, con
35933593
}
35943594
#endif
35953595

3596-
phar_entry_data *data = phar_get_or_create_entry_data(ZSTR_VAL((*pphar)->fname), ZSTR_LEN((*pphar)->fname), filename, filename_len, "w+b", 0, &error, true, time(NULL));
3596+
phar_entry_data *data = phar_get_or_create_entry_data((*pphar)->fname, filename, filename_len, "w+b", 0, &error, true, time(NULL));
35973597
if (!data) {
35983598
if (error) {
35993599
zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s does not exist and cannot be created: %s", filename, error);
@@ -3668,7 +3668,7 @@ static void phar_mkdir(phar_archive_data **pphar, zend_string *dir_name)
36683668
char *error;
36693669

36703670
phar_entry_data *data = phar_get_or_create_entry_data(
3671-
ZSTR_VAL((*pphar)->fname), ZSTR_LEN((*pphar)->fname),
3671+
(*pphar)->fname,
36723672
ZSTR_VAL(dir_name), ZSTR_LEN(dir_name),
36733673
"w+b", 2, &error, true,
36743674
time(NULL)

ext/phar/stream.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
189189
/* strip leading "/" */
190190
internal_file = estrndup(ZSTR_VAL(resource->path) + 1, ZSTR_LEN(resource->path) - 1);
191191
if (mode[0] == 'w' || (mode[0] == 'r' && mode[1] == '+')) {
192-
if (NULL == (idata = phar_get_or_create_entry_data(ZSTR_VAL(resource->host), ZSTR_LEN(resource->host), internal_file, strlen(internal_file), mode, 0, &error, true, time(NULL)))) {
192+
if (NULL == (idata = phar_get_or_create_entry_data(resource->host, internal_file, strlen(internal_file), mode, 0, &error, true, time(NULL)))) {
193193
if (error) {
194194
php_stream_wrapper_log_error(wrapper, options, "%s", error);
195195
efree(error);

ext/phar/util.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, co
611611
/**
612612
* Create a new dummy file slot within a writeable phar for a newly created file
613613
*/
614-
ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp) /* {{{ */
614+
ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(zend_string *fname, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp) /* {{{ */
615615
{
616616
phar_archive_data *phar;
617617
phar_entry_info etemp;
@@ -625,11 +625,11 @@ ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fnam
625625

626626
is_dir = (path_len && path[path_len - 1] == '/') ? 1 : 0;
627627

628-
if (FAILURE == phar_get_archive(&phar, fname, fname_len, NULL, 0, error)) {
628+
if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 0, error)) {
629629
return NULL;
630630
}
631631

632-
if (FAILURE == phar_get_entry_data(&ret, fname, fname_len, path, path_len, mode, allow_dir, error, security)) {
632+
if (FAILURE == phar_get_entry_data(&ret, ZSTR_VAL(fname), ZSTR_LEN(fname), path, path_len, mode, allow_dir, error, security)) {
633633
return NULL;
634634
} else if (ret) {
635635
return ret;
@@ -641,7 +641,7 @@ ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fnam
641641
}
642642

643643
if (phar->is_persistent && FAILURE == phar_copy_on_write(&phar)) {
644-
spprintf(error, 4096, "phar error: file \"%s\" in phar \"%s\" cannot be created, could not make cached phar writeable", path, fname);
644+
spprintf(error, 4096, "phar error: file \"%s\" in phar \"%s\" cannot be created, could not make cached phar writeable", path, ZSTR_VAL(fname));
645645
return NULL;
646646
}
647647

0 commit comments

Comments
 (0)