Skip to content

Commit 21f4211

Browse files
committed
Use zend_string_{equals,startswith} helpers
Closes GH-17240.
1 parent c7b80e6 commit 21f4211

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

ext/phar/phar_object.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4157,7 +4157,7 @@ static zend_result phar_extract_file(bool overwrite, phar_entry_info *entry, cha
41574157
return SUCCESS;
41584158
}
41594159

4160-
if (ZSTR_LEN(entry->filename) >= sizeof(".phar")-1 && !memcmp(ZSTR_VAL(entry->filename), ".phar", sizeof(".phar")-1)) {
4160+
if (zend_string_starts_with_literal(entry->filename, ".phar")) {
41614161
return SUCCESS;
41624162
}
41634163
/* strip .. from path and restrict it to be under dest directory */
@@ -4330,7 +4330,7 @@ static int extract_helper(phar_archive_data *archive, zend_string *search, char
43304330
} else if ('/' == ZSTR_VAL(search)[ZSTR_LEN(search) - 1]) {
43314331
/* ends in "/" -- extract all entries having that prefix */
43324332
ZEND_HASH_MAP_FOREACH_PTR(&archive->manifest, entry) {
4333-
if (0 != strncmp(ZSTR_VAL(search), ZSTR_VAL(entry->filename), ZSTR_LEN(search))) continue;
4333+
if (!zend_string_starts_with(entry->filename, search)) continue;
43344334
if (FAILURE == phar_extract_file(overwrite, entry, pathto, pathto_len, error)) return -1;
43354335
extracted++;
43364336
} ZEND_HASH_FOREACH_END();

ext/phar/stream.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
325325
char *entry = ZSTR_VAL(idata->internal_file->filename), *cwd;
326326

327327
PHAR_G(cwd_init) = 1;
328-
if ((idata->phar->is_tar || idata->phar->is_zip) && ZSTR_LEN(idata->internal_file->filename) == sizeof(".phar/stub.php")-1 && !strncmp(entry, ".phar/stub.php", sizeof(".phar/stub.php")-1)) {
328+
if ((idata->phar->is_tar || idata->phar->is_zip) && zend_string_equals_literal(idata->internal_file->filename, ".phar/stub.php")) {
329329
/* we're executing the stub, which doesn't count as a file */
330330
PHAR_G(cwd_init) = 0;
331331
} else if ((cwd = strrchr(entry, '/'))) {

ext/phar/tar.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ static zend_result phar_tar_process_metadata(phar_entry_info *entry, php_stream
177177

178178
phar_parse_metadata_lazy(metadata, &entry->metadata_tracker, entry->uncompressed_filesize, entry->is_persistent);
179179

180-
if (ZSTR_LEN(entry->filename) == sizeof(".phar/.metadata.bin")-1 && !memcmp(ZSTR_VAL(entry->filename), ".phar/.metadata.bin", sizeof(".phar/.metadata.bin")-1)) {
180+
if (zend_string_equals_literal(entry->filename, ".phar/.metadata.bin")) {
181181
if (phar_metadata_tracker_has_data(&entry->phar->metadata_tracker, entry->phar->is_persistent)) {
182182
efree(metadata);
183183
return FAILURE;
@@ -515,7 +515,7 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch
515515
++entry.manifest_pos;
516516
}
517517

518-
if (ZSTR_LEN(entry.filename) >= sizeof(".phar/.metadata")-1 && !memcmp(ZSTR_VAL(entry.filename), ".phar/.metadata", sizeof(".phar/.metadata")-1)) {
518+
if (zend_string_starts_with_literal(entry.filename, ".phar/.metadata")) {
519519
if (FAILURE == phar_tar_process_metadata(newentry, fp)) {
520520
if (error) {
521521
spprintf(error, 4096, "phar error: tar-based phar \"%s\" has invalid metadata in magic file \"%s\"", fname, ZSTR_VAL(entry.filename));
@@ -526,7 +526,7 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch
526526
}
527527
}
528528

529-
if (!actual_alias && ZSTR_LEN(entry.filename) == sizeof(".phar/alias.txt")-1 && !strncmp(ZSTR_VAL(entry.filename), ".phar/alias.txt", sizeof(".phar/alias.txt")-1)) {
529+
if (!actual_alias && zend_string_equals_literal(entry.filename, ".phar/alias.txt")) {
530530
/* found explicit alias */
531531
if (size > 511) {
532532
if (error) {
@@ -907,8 +907,8 @@ static int phar_tar_setupmetadata(zval *zv, void *argument) /* {{{ */
907907
char **error = i->error;
908908
phar_entry_info *entry = (phar_entry_info *)Z_PTR_P(zv), *metadata, newentry = {0};
909909

910-
if (ZSTR_LEN(entry->filename) >= sizeof(".phar/.metadata") && !memcmp(ZSTR_VAL(entry->filename), ".phar/.metadata", sizeof(".phar/.metadata")-1)) {
911-
if (ZSTR_LEN(entry->filename) == sizeof(".phar/.metadata.bin")-1 && !memcmp(ZSTR_VAL(entry->filename), ".phar/.metadata.bin", sizeof(".phar/.metadata.bin")-1)) {
910+
if (zend_string_starts_with_literal(entry->filename, ".phar/.metadata")) {
911+
if (zend_string_equals_literal(entry->filename, ".phar/.metadata.bin")) {
912912
return phar_tar_setmetadata(&entry->phar->metadata_tracker, entry, error);
913913
}
914914
/* search for the file this metadata entry references */

ext/phar/zip.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alia
484484
+ PHAR_GET_16(zipentry.extra_len);
485485
}
486486

487-
if (ZSTR_LEN(entry.filename) == sizeof(".phar/signature.bin")-1 && !strncmp(ZSTR_VAL(entry.filename), ".phar/signature.bin", sizeof(".phar/signature.bin")-1)) {
487+
if (zend_string_equals_literal(entry.filename, ".phar/signature.bin")) {
488488
size_t read;
489489
php_stream *sigfile;
490490
char *sig;
@@ -627,7 +627,7 @@ int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alia
627627
ZVAL_UNDEF(&entry.metadata_tracker.val);
628628
}
629629

630-
if (!actual_alias && ZSTR_LEN(entry.filename) == sizeof(".phar/alias.txt")-1 && !strncmp(ZSTR_VAL(entry.filename), ".phar/alias.txt", sizeof(".phar/alias.txt")-1)) {
630+
if (!actual_alias && zend_string_equals_literal(entry.filename, ".phar/alias.txt")) {
631631
php_stream_filter *filter;
632632

633633
/* archive alias found */

0 commit comments

Comments
 (0)