Skip to content

Commit 7f017c5

Browse files
committed
ext/phar: remove const qualifier for alias zend_string param
As we want to use it to lookup hash tables and in the future copy it.
1 parent 669ee22 commit 7f017c5

4 files changed

Lines changed: 43 additions & 24 deletions

File tree

ext/phar/phar.c

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,8 +1302,14 @@ 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, 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) /* {{{ */
1306-
{
1305+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(
1306+
zend_string *fname,
1307+
/* copyable & hash update */ zend_string *alias,
1308+
bool is_data,
1309+
uint32_t options,
1310+
phar_archive_data** pphar,
1311+
char **error
1312+
) {
13071313
const char *ext_str, *z;
13081314
char *my_error;
13091315
size_t ext_len;
@@ -1366,12 +1372,17 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(ze
13661372

13671373
return phar_create_or_parse_filename(fname, alias, is_data, options, pphar, error);
13681374
}
1369-
/* }}} */
13701375

13711376
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);
13721377

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) /* {{{ */
1374-
{
1378+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(
1379+
zend_string *fname,
1380+
/* copyable & hash update */ zend_string *alias,
1381+
bool is_data,
1382+
uint32_t options,
1383+
phar_archive_data** pphar,
1384+
char **error
1385+
) {
13751386
php_stream *fp;
13761387
zend_string *actual = NULL;
13771388
zend_string *save_fname = fname;
@@ -1462,15 +1473,14 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(z
14621473

14631474
if (is_data) {
14641475
alias = NULL;
1465-
alias_len = 0;
14661476
mydata->is_data = 1;
14671477
/* assume tar format, PharData can specify other */
14681478
mydata->is_tar = 1;
14691479
} else {
14701480
if (alias) {
1471-
const phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias_cstr, alias_len);
1481+
const phar_archive_data *fd_ptr = zend_hash_find_ptr(&(PHAR_G(phar_alias_map)), alias);
14721482
if (fd_ptr && SUCCESS != phar_free_alias(fd_ptr)) {
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);
1483+
spprintf(error, 4096, "phar error: phar \"%s\" cannot set alias \"%s\", already in use by another phar archive", ZSTR_VAL(mydata->fname), ZSTR_VAL(alias));
14741484

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

@@ -1481,14 +1491,14 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(z
14811491
}
14821492

14831493
ZEND_ASSERT(!mydata->is_persistent);
1484-
mydata->alias = alias ? estrndup(alias_cstr, alias_len) : estrndup(ZSTR_VAL(mydata->fname), ZSTR_LEN(mydata->fname));
1485-
mydata->alias_len = alias ? alias_len : ZSTR_LEN(mydata->fname);
1494+
mydata->alias = alias ? estrndup(ZSTR_VAL(alias), ZSTR_LEN(alias)) : estrndup(ZSTR_VAL(mydata->fname), ZSTR_LEN(mydata->fname));
1495+
mydata->alias_len = alias ? ZSTR_LEN(alias) : ZSTR_LEN(mydata->fname);
14861496
}
14871497

1488-
if (alias_len && alias) {
1489-
if (NULL == zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), alias_cstr, alias_len, mydata)) {
1498+
if (alias) {
1499+
if (NULL == zend_hash_add_ptr(&(PHAR_G(phar_alias_map)), alias, mydata)) {
14901500
if (options & REPORT_ERRORS) {
1491-
spprintf(error, 0, "archive \"%s\" cannot be associated with alias \"%s\", already in use", ZSTR_VAL(fname), alias_cstr);
1501+
spprintf(error, 0, "archive \"%s\" cannot be associated with alias \"%s\", already in use", ZSTR_VAL(fname), ZSTR_VAL(alias));
14921502
}
14931503

14941504
zend_hash_del(&(PHAR_G(phar_fname_map)), mydata->fname);
@@ -1502,7 +1512,6 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_create_or_parse_filename(z
15021512
*pphar = mydata;
15031513
return SUCCESS;
15041514
}
1505-
/* }}}*/
15061515

15071516
/**
15081517
* Return an already opened filename.

ext/phar/phar_internal.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -407,8 +407,8 @@ 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, 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, 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);
410+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_filename(zend_string *fname, /* copyable & hash update */ zend_string *alias, 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, /* copyable & hash update */ 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, 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);
449+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_tar(zend_string *fname, /* copyable & hash update */ 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, 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);
454+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_zip(zend_string *fname, /* copyable & hash update */ 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: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,14 @@ bool phar_is_tar(const char *buf, const char *fname) /* {{{ */
126126
}
127127
/* }}} */
128128

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) /* {{{ */
130-
{
129+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_tar(
130+
zend_string *fname,
131+
/* copyable & hash update */ zend_string *alias,
132+
bool is_data,
133+
uint32_t options,
134+
phar_archive_data** pphar,
135+
char **error
136+
) {
131137
phar_archive_data *phar;
132138
zend_result ret = phar_create_or_parse_filename(fname, alias, is_data, options, &phar, error);
133139

@@ -153,7 +159,6 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_tar(zend_st
153159
spprintf(error, 4096, "phar tar error: \"%s\" already exists as a regular phar and must be deleted from disk prior to creating as a tar-based phar", ZSTR_VAL(fname));
154160
return FAILURE;
155161
}
156-
/* }}} */
157162

158163
static zend_result phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp) /* {{{ */
159164
{

ext/phar/zip.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -794,8 +794,14 @@ 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, 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) /* {{{ */
798-
{
797+
ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_zip(
798+
zend_string *fname,
799+
/* copyable & hash update */ zend_string *alias,
800+
bool is_data,
801+
uint32_t options,
802+
phar_archive_data** pphar,
803+
char **error
804+
) {
799805
phar_archive_data *phar;
800806
zend_result ret = phar_create_or_parse_filename(fname, alias, is_data, options, &phar, error);
801807

@@ -822,7 +828,6 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 5, 6) zend_result phar_open_or_create_zip(zend_st
822828

823829
return FAILURE;
824830
}
825-
/* }}} */
826831

827832
struct _phar_zip_pass {
828833
php_stream *filefp;

0 commit comments

Comments
 (0)