Skip to content

Commit b04136e

Browse files
authored
ext/phar: convert phar_open_from_filename() to use zend_string for alias (#21917)
1 parent f31e4e6 commit b04136e

4 files changed

Lines changed: 15 additions & 13 deletions

File tree

ext/phar/phar.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static void phar_split_cache_list(void) /* {{{ */
131131
len = strlen(key);
132132
}
133133

134-
if (SUCCESS == phar_open_from_filename(key, len, NULL, 0, 0, &phar, NULL)) {
134+
if (SUCCESS == phar_open_from_filename(key, len, NULL, 0, &phar, NULL)) {
135135
phar->phar_pos = i++;
136136
php_stream_close(phar->fp);
137137
phar->fp = NULL;
@@ -1507,7 +1507,7 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_create_or_parse_filename(z
15071507
* that the manifest is proper, then pass it to phar_parse_pharfile(). SUCCESS
15081508
* or FAILURE is returned and pphar is set to a pointer to the phar's manifest
15091509
*/
1510-
zend_result phar_open_from_filename(char *fname, size_t fname_len, const char *alias, size_t alias_len, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
1510+
zend_result phar_open_from_filename(char *fname, size_t fname_len, const zend_string *alias, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
15111511
{
15121512
php_stream *fp;
15131513
zend_string *actual;
@@ -1521,7 +1521,9 @@ zend_result phar_open_from_filename(char *fname, size_t fname_len, const char *a
15211521
is_data = true;
15221522
}
15231523

1524-
if (phar_open_parsed_phar(fname, fname_len, alias, alias_len, is_data, options, pphar, error) == SUCCESS) {
1524+
const char *alias_cstr = alias ? ZSTR_VAL(alias) : NULL;
1525+
size_t alias_len = alias ? ZSTR_LEN(alias) : 0;
1526+
if (phar_open_parsed_phar(fname, fname_len, alias_cstr, alias_len, is_data, options, pphar, error) == SUCCESS) {
15251527
return SUCCESS;
15261528
} else if (error && *error) {
15271529
return FAILURE;
@@ -1549,7 +1551,7 @@ zend_result phar_open_from_filename(char *fname, size_t fname_len, const char *a
15491551
fname_len = ZSTR_LEN(actual);
15501552
}
15511553

1552-
zend_result ret = phar_open_from_fp(fp, fname, fname_len, alias, alias_len, options, pphar, error);
1554+
zend_result ret = phar_open_from_fp(fp, fname, fname_len, alias_cstr, alias_len, options, pphar, error);
15531555

15541556
if (actual) {
15551557
zend_string_release_ex(actual, 0);
@@ -3158,7 +3160,7 @@ static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type)
31583160
return phar_orig_compile_file(file_handle, type);
31593161
}
31603162
if (strstr(ZSTR_VAL(file_handle->filename), ".phar") && !strstr(ZSTR_VAL(file_handle->filename), "://")) {
3161-
if (SUCCESS == phar_open_from_filename(ZSTR_VAL(file_handle->filename), ZSTR_LEN(file_handle->filename), NULL, 0, 0, &phar, NULL)) {
3163+
if (SUCCESS == phar_open_from_filename(ZSTR_VAL(file_handle->filename), ZSTR_LEN(file_handle->filename), NULL, 0, &phar, NULL)) {
31623164
if (phar->is_zip || phar->is_tar) {
31633165
zend_file_handle f;
31643166

ext/phar/phar_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ void phar_object_init(void);
406406
void phar_destroy_phar_data(phar_archive_data *phar);
407407

408408
ZEND_ATTRIBUTE_NONNULL zend_result phar_postprocess_file(phar_entry_data *idata, uint32_t crc32, char **error, int process_zip);
409-
zend_result phar_open_from_filename(char *fname, size_t fname_len, const char *alias, size_t alias_len, uint32_t options, phar_archive_data** pphar, char **error);
409+
zend_result phar_open_from_filename(char *fname, size_t fname_len, const zend_string *alias, uint32_t options, phar_archive_data** pphar, char **error);
410410
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_filename(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
411411
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_create_or_parse_filename(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
412412
ZEND_ATTRIBUTE_NONNULL_ARGS(2) zend_result phar_open_executed_filename(const zend_string *alias, char **error);

ext/phar/phar_object.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -970,16 +970,16 @@ PHP_METHOD(Phar, mapPhar)
970970
PHP_METHOD(Phar, loadPhar)
971971
{
972972
zend_string *fname;
973-
char *alias = NULL, *error;
974-
size_t alias_len = 0;
973+
zend_string *alias = NULL;
974+
char *error;
975975

976-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|s!", &fname, &alias, &alias_len) == FAILURE) {
976+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|S!", &fname, &alias) == FAILURE) {
977977
RETURN_THROWS();
978978
}
979979

980980
phar_request_initialize();
981981

982-
RETVAL_BOOL(phar_open_from_filename(ZSTR_VAL(fname), ZSTR_LEN(fname), alias, alias_len, REPORT_ERRORS, NULL, &error) == SUCCESS);
982+
RETVAL_BOOL(phar_open_from_filename(ZSTR_VAL(fname), ZSTR_LEN(fname), alias, REPORT_ERRORS, NULL, &error) == SUCCESS);
983983

984984
if (error) {
985985
zend_throw_exception_ex(phar_ce_PharException, 0, "%s", error);
@@ -1266,7 +1266,7 @@ PHP_METHOD(Phar, unlinkArchive)
12661266
RETURN_THROWS();
12671267
}
12681268

1269-
if (FAILURE == phar_open_from_filename(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 0, REPORT_ERRORS, &phar, &error)) {
1269+
if (FAILURE == phar_open_from_filename(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, REPORT_ERRORS, &phar, &error)) {
12701270
if (error) {
12711271
zend_throw_exception_ex(phar_ce_PharException, 0, "Unknown phar archive \"%s\": %s", ZSTR_VAL(fname), error);
12721272
efree(error);
@@ -4416,7 +4416,7 @@ PHP_METHOD(PharFileInfo, __construct)
44164416
RETURN_THROWS();
44174417
}
44184418

4419-
if (phar_open_from_filename(ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, REPORT_ERRORS, &phar_data, &error) == FAILURE) {
4419+
if (phar_open_from_filename(ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, REPORT_ERRORS, &phar_data, &error) == FAILURE) {
44204420
zend_string_release_ex(arch, false);
44214421
efree(entry);
44224422
if (error) {

ext/phar/stream.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const
137137
return NULL;
138138
}
139139
} else {
140-
if (phar_open_from_filename(ZSTR_VAL(resource->host), ZSTR_LEN(resource->host), NULL, 0, options, NULL, &error) == FAILURE)
140+
if (phar_open_from_filename(ZSTR_VAL(resource->host), ZSTR_LEN(resource->host), NULL, options, NULL, &error) == FAILURE)
141141
{
142142
if (error) {
143143
if (!(options & PHP_STREAM_URL_STAT_QUIET)) {

0 commit comments

Comments
 (0)