mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.5'
* PHP-8.5: phar: Reduce code duplication wrt error handling in phar_parse_zipfile()
This commit is contained in:
@@ -345,28 +345,6 @@ foundit:
|
||||
entry.is_zip = 1;
|
||||
entry.fp_type = PHAR_FP;
|
||||
entry.is_persistent = mydata->is_persistent;
|
||||
#define PHAR_ZIP_FAIL_FREE(errmsg, save) \
|
||||
zend_hash_destroy(&mydata->manifest); \
|
||||
HT_INVALIDATE(&mydata->manifest); \
|
||||
zend_hash_destroy(&mydata->mounted_dirs); \
|
||||
HT_INVALIDATE(&mydata->mounted_dirs); \
|
||||
zend_hash_destroy(&mydata->virtual_dirs); \
|
||||
HT_INVALIDATE(&mydata->virtual_dirs); \
|
||||
php_stream_close(fp); \
|
||||
phar_metadata_tracker_free(&mydata->metadata_tracker, mydata->is_persistent); \
|
||||
if (mydata->signature) { \
|
||||
efree(mydata->signature); \
|
||||
} \
|
||||
if (error) { \
|
||||
spprintf(error, 4096, "phar error: %s in zip-based phar \"%s\"", errmsg, mydata->fname); \
|
||||
} \
|
||||
pefree(mydata->fname, mydata->is_persistent); \
|
||||
if (mydata->alias) { \
|
||||
pefree(mydata->alias, mydata->is_persistent); \
|
||||
} \
|
||||
pefree(mydata, mydata->is_persistent); \
|
||||
efree(save); \
|
||||
return FAILURE;
|
||||
#define PHAR_ZIP_FAIL(errmsg) \
|
||||
zend_hash_destroy(&mydata->manifest); \
|
||||
HT_INVALIDATE(&mydata->manifest); \
|
||||
@@ -522,14 +500,13 @@ foundit:
|
||||
mydata->sig_flags = PHAR_GET_32(sig);
|
||||
if (FAILURE == phar_verify_signature(sigfile, php_stream_tell(sigfile), mydata->sig_flags, sig + 8, entry.uncompressed_filesize - 8, fname, &mydata->signature, &sig_len, error)) {
|
||||
efree(sig);
|
||||
php_stream_close(sigfile);
|
||||
if (error) {
|
||||
char *save;
|
||||
php_stream_close(sigfile);
|
||||
spprintf(&save, 4096, "signature cannot be verified: %s", *error);
|
||||
char errmsg[128];
|
||||
snprintf(errmsg, sizeof(errmsg), "signature cannot be verified: %s", *error);
|
||||
efree(*error);
|
||||
PHAR_ZIP_FAIL_FREE(save, save);
|
||||
PHAR_ZIP_FAIL(errmsg);
|
||||
} else {
|
||||
php_stream_close(sigfile);
|
||||
PHAR_ZIP_FAIL("signature cannot be verified");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user