]> granicus.if.org Git - php/commitdiff
Fix leak in phar open
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 10 Oct 2019 14:14:04 +0000 (16:14 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 10 Oct 2019 14:14:21 +0000 (16:14 +0200)
ext/phar/phar.c
ext/phar/tests/bug77396.phpt

index f1155e62742ca367e521a3e412667d8ee34eead9..ba76a9b0e06d536a9b602c782e38e6826cb4ee02 100644 (file)
@@ -1386,6 +1386,7 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
        mydata = ecalloc(1, sizeof(phar_archive_data));
        mydata->fname = expand_filepath(fname, NULL);
        if (mydata->fname == NULL) {
+               efree(mydata);
                return FAILURE;
        }
        fname_len = strlen(mydata->fname);
index ede25ff81f6fa89b3e889e62992dcb48c6a50c25..7dc834aa458b0c3ea78f5cd04cfc5ffddc65444e 100644 (file)
@@ -5,11 +5,11 @@ Bug #77396 Relative filename exceeding maximum path length causes null pointer d
 --FILE--
 <?php
 $path = '../' . str_repeat("x", PHP_MAXPATHLEN) . '.tar';
-$phar = new PharData($path);
+try {
+    $phar = new PharData($path);
+} catch (UnexpectedValueException $e) {
+    echo $e->getMessage(), "\n";
+}
 ?>
---EXPECTF--
-Fatal error: Uncaught UnexpectedValueException: Phar creation or opening failed in %s%ebug77396.php:%d
-Stack trace:
-#0 %s%ebug77396.php(%d): PharData->__construct(%s)
-#1 {main}
-  thrown in %s%ebug77396.php on line %d
+--EXPECT--
+Phar creation or opening failed