]> granicus.if.org Git - php/commitdiff
Fix stream leak in phar cache_list
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 24 Jun 2019 15:35:22 +0000 (17:35 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 25 Jun 2019 12:28:58 +0000 (14:28 +0200)
Zend/zend_list.c
Zend/zend_list.h
ext/phar/phar.c

index 293eeadd04a1f206a315a6a5b36c153161085308..21d013a5895a15deae3e924a26673251f9f3b947 100644 (file)
@@ -206,7 +206,7 @@ void plist_entry_destructor(zval *zv)
        free(res);
 }
 
-int zend_init_rsrc_list(void)
+ZEND_API int zend_init_rsrc_list(void)
 {
        zend_hash_init(&EG(regular_list), 8, NULL, list_entry_destructor, 0);
        return SUCCESS;
index 0bec20a280e8a484be448283c0f41e539eb0c8e7..b9a1d5e159a2725e05fd943fb1167f44ce1fe294 100644 (file)
@@ -45,7 +45,7 @@ void list_entry_destructor(zval *ptr);
 void plist_entry_destructor(zval *ptr);
 
 void zend_clean_module_rsrc_dtors(int module_number);
-int zend_init_rsrc_list(void);
+ZEND_API int zend_init_rsrc_list(void); /* Exported for phar hack */
 int zend_init_rsrc_plist(void);
 void zend_close_rsrc_list(HashTable *ht);
 void zend_destroy_rsrc_list(HashTable *ht);
index 109ec24afac9a2d75b237b9cc1712ca58f0747a7..cc949a6b6176422bc27c6b12c09fdec1b62552cb 100644 (file)
@@ -113,7 +113,7 @@ static void phar_split_cache_list(void) /* {{{ */
 
        /* fake request startup */
        PHAR_G(request_init) = 1;
-       zend_hash_init(&EG(regular_list), 0, NULL, NULL, 0);
+       zend_init_rsrc_list();
        EG(regular_list).nNextFreeElement=1;    /* we don't want resource id 0 */
 
        PHAR_G(has_bz2) = zend_hash_str_exists(&module_registry, "bz2", sizeof("bz2")-1);