ext/phar: Use size_t for string lenghts

And remove useless casts
This commit is contained in:
Gina Peter Bnayard 2024-08-15 12:49:06 +02:00 committed by Gina Peter Banyard
parent 947f72c181
commit 009039d447
4 changed files with 24 additions and 32 deletions

View File

@ -295,7 +295,6 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
zend_ulong unused;
phar_archive_data *phar;
phar_entry_info *entry = NULL;
uint32_t host_len;
if ((resource = phar_parse_url(wrapper, path, mode, options)) == NULL) {
php_stream_wrapper_log_error(wrapper, options, "phar url \"%s\" is unknown", path);
@ -320,7 +319,7 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
return NULL;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
phar_request_initialize();
internal_file = ZSTR_VAL(resource->path) + 1; /* strip leading "/" */
@ -401,7 +400,6 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo
char *error, *arch, *entry2;
size_t arch_len, entry_len;
php_url *resource = NULL;
uint32_t host_len;
/* pre-readonly check, we need to know if this is a data phar */
if (FAILURE == phar_split_fname(url_from, strlen(url_from), &arch, &arch_len, &entry2, &entry_len, 2, 2)) {
@ -438,7 +436,7 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo
return 0;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(resource->host), host_len, NULL, 0, &error)) {
php_stream_wrapper_log_error(wrapper, options, "phar error: cannot create directory \"%s\" in phar \"%s\", error retrieving phar information: %s", ZSTR_VAL(resource->path) + 1, ZSTR_VAL(resource->host), error);
@ -533,10 +531,8 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
char *error, *arch, *entry2;
size_t arch_len, entry_len;
php_url *resource = NULL;
uint32_t host_len;
zend_string *str_key;
zend_ulong unused;
uint32_t path_len;
/* pre-readonly check, we need to know if this is a data phar */
if (FAILURE == phar_split_fname(url, strlen(url), &arch, &arch_len, &entry2, &entry_len, 2, 2)) {
@ -573,7 +569,7 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
return 0;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(resource->host), host_len, NULL, 0, &error)) {
php_stream_wrapper_log_error(wrapper, options, "phar error: cannot remove directory \"%s\" in phar \"%s\", error retrieving phar information: %s", ZSTR_VAL(resource->path)+1, ZSTR_VAL(resource->host), error);
@ -582,7 +578,7 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
return 0;
}
path_len = ZSTR_LEN(resource->path) - 1;
size_t path_len = ZSTR_LEN(resource->path) - 1;
if (!(entry = phar_get_entry_info_dir(phar, ZSTR_VAL(resource->path) + 1, path_len, 2, &error, 1))) {
if (error) {

View File

@ -2023,11 +2023,11 @@ woohoo:
zend_string *str_key;
ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&PHAR_G(phar_fname_map), str_key, pphar) {
if (ZSTR_LEN(str_key) > (uint32_t) filename_len) {
if (ZSTR_LEN(str_key) > filename_len) {
continue;
}
if (!memcmp(filename, ZSTR_VAL(str_key), ZSTR_LEN(str_key)) && ((uint32_t)filename_len == ZSTR_LEN(str_key)
if (!memcmp(filename, ZSTR_VAL(str_key), ZSTR_LEN(str_key)) && (filename_len == ZSTR_LEN(str_key)
|| filename[ZSTR_LEN(str_key)] == '/' || filename[ZSTR_LEN(str_key)] == '\0')) {
*ext_str = filename + (ZSTR_LEN(str_key) - pphar->ext_len);
goto woohoo;
@ -2036,11 +2036,11 @@ woohoo:
if (PHAR_G(manifest_cached)) {
ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&cached_phars, str_key, pphar) {
if (ZSTR_LEN(str_key) > (uint32_t) filename_len) {
if (ZSTR_LEN(str_key) > filename_len) {
continue;
}
if (!memcmp(filename, ZSTR_VAL(str_key), ZSTR_LEN(str_key)) && ((uint32_t)filename_len == ZSTR_LEN(str_key)
if (!memcmp(filename, ZSTR_VAL(str_key), ZSTR_LEN(str_key)) && (filename_len == ZSTR_LEN(str_key)
|| filename[ZSTR_LEN(str_key)] == '/' || filename[ZSTR_LEN(str_key)] == '\0')) {
*ext_str = filename + (ZSTR_LEN(str_key) - pphar->ext_len);
goto woohoo;

View File

@ -2621,7 +2621,7 @@ PHP_METHOD(Phar, delete)
zend_throw_exception_ex(phar_ce_PharException, 0, "phar \"%s\" is persistent, unable to copy on write", phar_obj->archive->fname);
RETURN_THROWS();
}
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, (uint32_t) fname_len))) {
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, fname_len))) {
if (entry->is_deleted) {
/* entry is deleted, but has not been flushed to disk yet */
RETURN_TRUE;
@ -3440,13 +3440,13 @@ PHP_METHOD(Phar, copy)
RETURN_THROWS();
}
if (NULL == (oldentry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, oldfile, (uint32_t) oldfile_len)) || oldentry->is_deleted) {
if (NULL == (oldentry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, oldfile, oldfile_len)) || oldentry->is_deleted) {
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0,
"file \"%s\" cannot be copied to file \"%s\", file does not exist in %s", oldfile, newfile, phar_obj->archive->fname);
RETURN_THROWS();
}
if (NULL != (temp = zend_hash_str_find_ptr(&phar_obj->archive->manifest, newfile, (uint32_t) newfile_len)) && !temp->is_deleted) {
if (NULL != (temp = zend_hash_str_find_ptr(&phar_obj->archive->manifest, newfile, newfile_len)) && !temp->is_deleted) {
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0,
"file \"%s\" cannot be copied to file \"%s\", file must not already exist in phar %s", oldfile, newfile, phar_obj->archive->fname);
RETURN_THROWS();
@ -3466,7 +3466,7 @@ PHP_METHOD(Phar, copy)
RETURN_THROWS();
}
/* re-populate with copied-on-write entry */
oldentry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, oldfile, (uint32_t) oldfile_len);
oldentry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, oldfile, oldfile_len);
}
memcpy((void *) &newentry, oldentry, sizeof(phar_entry_info));
@ -3513,8 +3513,8 @@ PHP_METHOD(Phar, offsetExists)
PHAR_ARCHIVE_OBJECT();
if (zend_hash_str_exists(&phar_obj->archive->manifest, fname, (uint32_t) fname_len)) {
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, (uint32_t) fname_len))) {
if (zend_hash_str_exists(&phar_obj->archive->manifest, fname, fname_len)) {
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, fname_len))) {
if (entry->is_deleted) {
/* entry is deleted, but has not been flushed to disk yet */
RETURN_FALSE;
@ -3527,7 +3527,7 @@ PHP_METHOD(Phar, offsetExists)
}
RETURN_TRUE;
} else {
if (zend_hash_str_exists(&phar_obj->archive->virtual_dirs, fname, (uint32_t) fname_len)) {
if (zend_hash_str_exists(&phar_obj->archive->virtual_dirs, fname, fname_len)) {
RETURN_TRUE;
}
RETURN_FALSE;
@ -3772,8 +3772,8 @@ PHP_METHOD(Phar, offsetUnset)
RETURN_THROWS();
}
if (zend_hash_str_exists(&phar_obj->archive->manifest, fname, (uint32_t) fname_len)) {
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, (uint32_t) fname_len))) {
if (zend_hash_str_exists(&phar_obj->archive->manifest, fname, fname_len)) {
if (NULL != (entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, fname_len))) {
if (entry->is_deleted) {
/* entry is deleted, but has not been flushed to disk yet */
return;
@ -3785,7 +3785,7 @@ PHP_METHOD(Phar, offsetUnset)
RETURN_THROWS();
}
/* re-populate entry after copy on write */
entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, (uint32_t) fname_len);
entry = zend_hash_str_find_ptr(&phar_obj->archive->manifest, fname, fname_len);
}
entry->is_modified = 0;
entry->is_deleted = 1;

View File

@ -168,7 +168,6 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
php_url *resource = NULL;
php_stream *fpf;
zval *pzoption, *metadata;
uint32_t host_len;
if ((resource = phar_parse_url(wrapper, path, mode, options)) == NULL) {
return NULL;
@ -187,7 +186,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
return NULL;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
phar_request_initialize();
/* strip leading "/" */
@ -565,7 +564,6 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f
char *internal_file, *error;
phar_archive_data *phar;
phar_entry_info *entry;
uint32_t host_len;
size_t internal_file_len;
if ((resource = phar_parse_url(wrapper, url, "r", flags|PHP_STREAM_URL_STAT_QUIET)) == NULL) {
@ -583,7 +581,7 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f
return FAILURE;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
phar_request_initialize();
internal_file = ZSTR_VAL(resource->path) + 1; /* strip leading "/" */
@ -674,7 +672,6 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
int internal_file_len;
phar_entry_data *idata;
phar_archive_data *pphar;
uint32_t host_len;
if ((resource = phar_parse_url(wrapper, url, "rb", options)) == NULL) {
php_stream_wrapper_log_error(wrapper, options, "phar error: unlink failed");
@ -694,7 +691,7 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
return 0;
}
host_len = ZSTR_LEN(resource->host);
size_t host_len = ZSTR_LEN(resource->host);
phar_request_initialize();
pphar = zend_hash_find_ptr(&(PHAR_G(phar_fname_map)), resource->host);
@ -747,7 +744,6 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
char *error;
phar_archive_data *phar, *pfrom, *pto;
phar_entry_info *entry;
uint32_t host_len;
int is_dir = 0;
int is_modified = 0;
@ -823,7 +819,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
return 0;
}
host_len = ZSTR_LEN(resource_from->host);
size_t host_len = ZSTR_LEN(resource_from->host);
if (SUCCESS != phar_get_archive(&phar, ZSTR_VAL(resource_from->host), host_len, NULL, 0, &error)) {
php_url_free(resource_from);
@ -893,8 +889,8 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
Bucket *b;
zend_string *str_key;
zend_string *new_str_key;
uint32_t from_len = ZSTR_LEN(resource_from->path) - 1;
uint32_t to_len = ZSTR_LEN(resource_to->path) - 1;
size_t from_len = ZSTR_LEN(resource_from->path) - 1;
size_t to_len = ZSTR_LEN(resource_to->path) - 1;
ZEND_HASH_MAP_FOREACH_BUCKET(&phar->manifest, b) {
str_key = b->key;