Skip to content

Commit baaec0c

Browse files
committed
ext/phar: convert char to zend_string - phar_open_or_create_filename()
1 parent 87258eb commit baaec0c

4 files changed

Lines changed: 14 additions & 13 deletions

File tree

ext/phar/phar.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,7 +1302,7 @@ static zend_result phar_parse_pharfile(php_stream *fp, const char *fname, size_t
13021302
/**
13031303
* Create or open a phar for writing
13041304
*/
1305-
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) /* {{{ */
1305+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(zend_string *fname, zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
13061306
{
13071307
const char *ext_str, *z;
13081308
char *my_error;
@@ -1328,7 +1328,9 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_filename(ze
13281328
return FAILURE;
13291329
}
13301330
check_file:
1331-
if (phar_open_parsed_phar(ZSTR_VAL(fname), ZSTR_LEN(fname), alias, alias_len, is_data, options, test, &my_error) == SUCCESS) {
1331+
const char *alias_cstr = alias ? ZSTR_VAL(alias) : NULL;
1332+
size_t alias_len = alias ? ZSTR_LEN(alias) : 0;
1333+
if (phar_open_parsed_phar(ZSTR_VAL(fname), ZSTR_LEN(fname), alias_cstr, alias_len, is_data, options, test, &my_error) == SUCCESS) {
13321334
*pphar = *test;
13331335

13341336
if ((*test)->is_data && !(*test)->is_tar && !(*test)->is_zip) {
@@ -1354,15 +1356,15 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_filename(ze
13541356

13551357
if (ext_len > 3 && (z = memchr(ext_str, 'z', ext_len)) && ((ext_str + ext_len) - z >= 2) && !memcmp(z + 1, "ip", 2)) {
13561358
/* assume zip-based phar */
1357-
return phar_open_or_create_zip(fname, alias, alias_len, is_data, options, pphar, error);
1359+
return phar_open_or_create_zip(fname, alias_cstr, alias_len, is_data, options, pphar, error);
13581360
}
13591361

13601362
if (ext_len > 3 && (z = memchr(ext_str, 't', ext_len)) && ((ext_str + ext_len) - z >= 2) && !memcmp(z + 1, "ar", 2)) {
13611363
/* assume tar-based phar */
1362-
return phar_open_or_create_tar(fname, alias, alias_len, is_data, options, pphar, error);
1364+
return phar_open_or_create_tar(fname, alias_cstr, alias_len, is_data, options, pphar, error);
13631365
}
13641366

1365-
return phar_create_or_parse_filename(fname, alias, alias_len, is_data, options, pphar, error);
1367+
return phar_create_or_parse_filename(fname, alias_cstr, alias_len, is_data, options, pphar, error);
13661368
}
13671369
/* }}} */
13681370

ext/phar/phar_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ 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);
409409
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);
410-
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);
410+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(zend_string *fname, zend_string *alias, 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);
413413
zend_result phar_free_alias(const phar_archive_data *phar);

ext/phar/phar_object.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,9 +1084,8 @@ static const spl_other_handler phar_spl_foreign_handler = {
10841084
*/
10851085
PHP_METHOD(Phar, __construct)
10861086
{
1087-
zend_string *fname;
1088-
char *alias = NULL, *error;
1089-
size_t alias_len = 0;
1087+
zend_string *fname, *alias = NULL;
1088+
char *error;
10901089
bool is_data;
10911090
zend_long flags = SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS;
10921091
zend_long format = 0;
@@ -1099,11 +1098,11 @@ PHP_METHOD(Phar, __construct)
10991098
is_data = instanceof_function(Z_OBJCE_P(ZEND_THIS), phar_ce_data);
11001099

11011100
if (is_data) {
1102-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|ls!l", &fname, &flags, &alias, &alias_len, &format) == FAILURE) {
1101+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|lS!l", &fname, &flags, &alias, &format) == FAILURE) {
11031102
RETURN_THROWS();
11041103
}
11051104
} else {
1106-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|ls!", &fname, &flags, &alias, &alias_len) == FAILURE) {
1105+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|lS!", &fname, &flags, &alias) == FAILURE) {
11071106
RETURN_THROWS();
11081107
}
11091108
}
@@ -1122,7 +1121,7 @@ PHP_METHOD(Phar, __construct)
11221121
fname = arch;
11231122
}
11241123

1125-
zend_result phar_status = phar_open_or_create_filename(fname, alias, alias_len, is_data, REPORT_ERRORS, &phar_data, &error);
1124+
zend_result phar_status = phar_open_or_create_filename(fname, alias, is_data, REPORT_ERRORS, &phar_data, &error);
11261125

11271126
if (arch) {
11281127
zend_string_release_ex(arch, false);

ext/phar/stream.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const
114114
php_url_free(resource);
115115
return NULL;
116116
}
117-
if (phar_open_or_create_filename(resource->host, NULL, 0, 0, options, &phar, &error) == FAILURE)
117+
if (phar_open_or_create_filename(resource->host, NULL, 0, options, &phar, &error) == FAILURE)
118118
{
119119
if (error) {
120120
if (!(options & PHP_STREAM_URL_STAT_QUIET)) {

0 commit comments

Comments
 (0)