@@ -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); \
@@ -522,14 +500,13 @@ int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alia
522500			mydata -> sig_flags  =  PHAR_GET_32 (sig );
523501			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 )) {
524502				efree (sig );
503+ 				php_stream_close (sigfile );
525504				if  (error ) {
526- 					char  * save ;
527- 					php_stream_close (sigfile );
528- 					spprintf (& save , 4096 , "signature cannot be verified: %s" , * error );
505+ 					char  errmsg [128 ];
506+ 					snprintf (errmsg , sizeof (errmsg ), "signature cannot be verified: %s" , * error );
529507					efree (* error );
530- 					PHAR_ZIP_FAIL_FREE ( save ,  save );
508+ 					PHAR_ZIP_FAIL ( errmsg );
531509				} else  {
532- 					php_stream_close (sigfile );
533510					PHAR_ZIP_FAIL ("signature cannot be verified" );
534511				}
535512			}
0 commit comments