Skip to content

Commit 3ba86b1

Browse files
committed
ext/phar: convert phar_open_from_filename() to use zend_string for alias
1 parent 7a3d889 commit 3ba86b1

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);
@@ -3156,7 +3158,7 @@ static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type)
31563158
return phar_orig_compile_file(file_handle, type);
31573159
}
31583160
if (strstr(ZSTR_VAL(file_handle->filename), ".phar") && !strstr(ZSTR_VAL(file_handle->filename), "://")) {
3159-
if (SUCCESS == phar_open_from_filename(ZSTR_VAL(file_handle->filename), ZSTR_LEN(file_handle->filename), NULL, 0, 0, &phar, NULL)) {
3161+
if (SUCCESS == phar_open_from_filename(ZSTR_VAL(file_handle->filename), ZSTR_LEN(file_handle->filename), NULL, 0, &phar, NULL)) {
31603162
if (phar->is_zip || phar->is_tar) {
31613163
zend_file_handle f;
31623164

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(3) zend_result phar_open_executed_filename(const char *alias, size_t alias_len, char **error);

ext/phar/phar_object.c

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

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

979979
phar_request_initialize();
980980

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

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

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

4418-
if (phar_open_from_filename(ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, REPORT_ERRORS, &phar_data, &error) == FAILURE) {
4418+
if (phar_open_from_filename(ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, REPORT_ERRORS, &phar_data, &error) == FAILURE) {
44194419
zend_string_release_ex(arch, false);
44204420
efree(entry);
44214421
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)