]> granicus.if.org Git - php/commitdiff
fix memleak on error
authorGreg Beaver <cellog@php.net>
Tue, 10 Jun 2008 17:58:09 +0000 (17:58 +0000)
committerGreg Beaver <cellog@php.net>
Tue, 10 Jun 2008 17:58:09 +0000 (17:58 +0000)
ext/phar/util.c

index 7d8ce5e0eb6c822e1d0c772e0b6f411738b3cdcd..fc6c60a9d89df7cc95f60281b1d0113b7239e355 100644 (file)
@@ -656,6 +656,7 @@ phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, char
                if (error) {
                        spprintf(error, 0, "phar error: unable to create temporary file");
                }
+               efree(ret);
                return NULL;
        }
        etemp.fp_refcount = 1;
@@ -681,6 +682,7 @@ phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, char
                etemp.tar_type = TAR_FILE;
        }
        if (FAILURE == zend_hash_add(&phar->manifest, etemp.filename, path_len, (void*)&etemp, sizeof(phar_entry_info), (void **) &entry)) {
+               efree(ret);
                if (error) {
                        spprintf(error, 0, "phar error: unable to add new entry \"%s\" to phar \"%s\"", etemp.filename, phar->fname);
                }
@@ -690,6 +692,7 @@ phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, char
        if (!entry) {
                php_stream_close(etemp.fp);
                efree(etemp.filename);
+               efree(ret);
                return NULL;
        }