Skip to content

Commit 669ee22

Browse files
committed
ext/phar: use zend_string for alias arg of phar_open_or_create_filename()
1 parent 148d029 commit 669ee22

4 files changed

Lines changed: 19 additions & 17 deletions

File tree

ext/phar/phar.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,21 +1356,21 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(ze
13561356

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

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

1367-
return phar_create_or_parse_filename(fname, alias_cstr, alias_len, is_data, options, pphar, error);
1367+
return phar_create_or_parse_filename(fname, alias, is_data, options, pphar, error);
13681368
}
13691369
/* }}} */
13701370

13711371
static zend_result phar_open_from_fp(php_stream* fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, uint32_t options, phar_archive_data** pphar, char **error);
13721372

1373-
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) /* {{{ */
1373+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
13741374
{
13751375
php_stream *fp;
13761376
zend_string *actual = NULL;
@@ -1388,8 +1388,10 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_create_or_parse_filename(z
13881388
fname = actual;
13891389
}
13901390

1391+
const char *alias_cstr = alias ? ZSTR_VAL(alias) : NULL;
1392+
size_t alias_len = alias ? ZSTR_LEN(alias) : 0;
13911393
if (fp) {
1392-
if (phar_open_from_fp(fp, ZSTR_VAL(fname), ZSTR_LEN(fname), alias, alias_len, options, pphar, error) == SUCCESS) {
1394+
if (phar_open_from_fp(fp, ZSTR_VAL(fname), ZSTR_LEN(fname), alias_cstr, alias_len, options, pphar, error) == SUCCESS) {
13931395
if ((*pphar)->is_data || !PHAR_G(readonly)) {
13941396
(*pphar)->is_writeable = 1;
13951397
}
@@ -1466,9 +1468,9 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_create_or_parse_filename(z
14661468
mydata->is_tar = 1;
14671469
} else {
14681470
if (alias) {
1469-
const phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len);
1471+
const phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias_cstr, alias_len);
14701472
if (fd_ptr && SUCCESS != phar_free_alias(fd_ptr)) {
1471-
spprintf(error, 4096, "phar error: phar \"%s\" cannot set alias \"%s\", already in use by another phar archive", ZSTR_VAL(mydata->fname), alias);
1473+
spprintf(error, 4096, "phar error: phar \"%s\" cannot set alias \"%s\", already in use by another phar archive", ZSTR_VAL(mydata->fname), alias_cstr);
14721474

14731475
zend_hash_del(&(PHAR_G(phar_fname_map)), mydata->fname);
14741476

@@ -1479,14 +1481,14 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_create_or_parse_filename(z
14791481
}
14801482

14811483
ZEND_ASSERT(!mydata->is_persistent);
1482-
mydata->alias = alias ? estrndup(alias, alias_len) : estrndup(ZSTR_VAL(mydata->fname), ZSTR_LEN(mydata->fname));
1484+
mydata->alias = alias ? estrndup(alias_cstr, alias_len) : estrndup(ZSTR_VAL(mydata->fname), ZSTR_LEN(mydata->fname));
14831485
mydata->alias_len = alias ? alias_len : ZSTR_LEN(mydata->fname);
14841486
}
14851487

14861488
if (alias_len && alias) {
1487-
if (NULL == zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len, mydata)) {
1489+
if (NULL == zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), alias_cstr, alias_len, mydata)) {
14881490
if (options & REPORT_ERRORS) {
1489-
spprintf(error, 0, "archive \"%s\" cannot be associated with alias \"%s\", already in use", ZSTR_VAL(fname), alias);
1491+
spprintf(error, 0, "archive \"%s\" cannot be associated with alias \"%s\", already in use", ZSTR_VAL(fname), alias_cstr);
14901492
}
14911493

14921494
zend_hash_del(&(PHAR_G(phar_fname_map)), mydata->fname);

ext/phar/phar_internal.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ void phar_destroy_phar_data(phar_archive_data *phar);
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);
410410
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
411-
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);
411+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(zend_string *fname, const zend_string *alias, 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);
414414
phar_archive_data* phar_get_archive(const char *fname, size_t fname_len, const char *alias, size_t alias_len, char **error);
@@ -446,12 +446,12 @@ zend_result phar_copy_on_write(phar_archive_data **pphar);
446446
/* tar functions in tar.c */
447447
bool phar_is_tar(const char *buf, const char *fname);
448448
zend_result phar_parse_tarfile(php_stream* fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error);
449-
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_tar(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
449+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_tar(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
450450
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_tar_flush(phar_archive_data *phar, zend_string *user_stub, bool is_default_stub, char **error);
451451

452452
/* zip functions in zip.c */
453453
zend_result phar_parse_zipfile(php_stream *fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, char **error);
454-
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_zip(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
454+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_zip(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error);
455455
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_zip_flush(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error);
456456

457457
#ifdef PHAR_MAIN

ext/phar/tar.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ bool phar_is_tar(const char *buf, const char *fname) /* {{{ */
126126
}
127127
/* }}} */
128128

129-
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_tar(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
129+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_tar(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
130130
{
131131
phar_archive_data *phar;
132-
zend_result ret = phar_create_or_parse_filename(fname, alias, alias_len, is_data, options, &phar, error);
132+
zend_result ret = phar_create_or_parse_filename(fname, alias, is_data, options, &phar, error);
133133

134134
if (FAILURE == ret) {
135135
return FAILURE;

ext/phar/zip.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -794,10 +794,10 @@ zend_result phar_parse_zipfile(php_stream *fp, const char *fname, size_t fname_l
794794
/**
795795
* Create or open a zip-based phar for writing
796796
*/
797-
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 6, 7) zend_result phar_open_or_create_zip(zend_string *fname, const char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
797+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_zip(zend_string *fname, const zend_string *alias, bool is_data, uint32_t options, phar_archive_data** pphar, char **error) /* {{{ */
798798
{
799799
phar_archive_data *phar;
800-
zend_result ret = phar_create_or_parse_filename(fname, alias, alias_len, is_data, options, &phar, error);
800+
zend_result ret = phar_create_or_parse_filename(fname, alias, is_data, options, &phar, error);
801801

802802
if (FAILURE == ret) {
803803
return FAILURE;

0 commit comments

Comments
 (0)