@@ -345,28 +345,6 @@ int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alia
345345 entry .is_zip = 1 ;
346346 entry .fp_type = PHAR_FP ;
347347 entry .is_persistent = mydata -> is_persistent ;
348- #define PHAR_ZIP_FAIL_FREE (errmsg , save ) \
349- zend_hash_destroy(&mydata->manifest); \
350- HT_INVALIDATE(&mydata->manifest); \
351- zend_hash_destroy(&mydata->mounted_dirs); \
352- HT_INVALIDATE(&mydata->mounted_dirs); \
353- zend_hash_destroy(&mydata->virtual_dirs); \
354- HT_INVALIDATE(&mydata->virtual_dirs); \
355- php_stream_close(fp); \
356- phar_metadata_tracker_free(&mydata->metadata_tracker, mydata->is_persistent); \
357- if (mydata->signature) { \
358- efree(mydata->signature); \
359- } \
360- if (error) { \
361- spprintf(error, 4096, "phar error: %s in zip-based phar \"%s\"", errmsg, mydata->fname); \
362- } \
363- pefree(mydata->fname, mydata->is_persistent); \
364- if (mydata->alias) { \
365- pefree(mydata->alias, mydata->is_persistent); \
366- } \
367- pefree(mydata, mydata->is_persistent); \
368- efree(save); \
369- return FAILURE;
370348#define PHAR_ZIP_FAIL (errmsg ) \
371349 zend_hash_destroy(&mydata->manifest); \
372350 HT_INVALIDATE(&mydata->manifest); \
@@ -521,14 +499,13 @@ int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alia
521499 mydata -> sig_flags = PHAR_GET_32 (sig );
522500 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 )) {
523501 efree (sig );
502+ php_stream_close (sigfile );
524503 if (error ) {
525- char * save ;
526- php_stream_close (sigfile );
527- spprintf (& save , 4096 , "signature cannot be verified: %s" , * error );
504+ char errmsg [128 ];
505+ snprintf (errmsg , sizeof (errmsg ), "signature cannot be verified: %s" , * error );
528506 efree (* error );
529- PHAR_ZIP_FAIL_FREE ( save , save );
507+ PHAR_ZIP_FAIL ( errmsg );
530508 } else {
531- php_stream_close (sigfile );
532509 PHAR_ZIP_FAIL ("signature cannot be verified" );
533510 }
534511 }
0 commit comments