com php-src: Fixed bug #71527 Buffer over-write in finfo_open with malformed magic file: ext/fileinfo/libmagic/f uncs.c
ext/fileinfo/tests/bug68996.phpt ext/f ileinfo/tests/bug71527.magic ext/fileinfo/tests/b ug71527.phpt

From: Date: Sun, 27 Mar 2016 22:45:19 +0000
Subject: com php-src: Fixed bug #71527 Buffer over-write in finfo_open with malformed magic file: ext/fileinfo/libmagic/f uncs.c
ext/fileinfo/tests/bug68996.phpt ext/f ileinfo/tests/bug71527.magic ext/fileinfo/tests/b ug71527.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-91511@lists.php.net to get a copy of this message
Commit: e93c6910fceb62d19fe143e351a86eee8df9b456 Author: Anatol Belski <ab@php.net> Mon, 28 Mar 2016 00:45:19 +0200 Parents: 1e9b175204e3286d64dfd6c9f09151c31b5e099a Branches: PHP-7.0.5 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e93c6910fceb62d19fe143e351a86eee8df9b456 Log: Fixed bug #71527 Buffer over-write in finfo_open with malformed magic file The actual fix is applying the upstream patch from https://github.com/file/file/commit/6713ca45e7757297381f4b4cdb9cf5e624a9ad36 Bugs: https://bugs.php.net/71527 Changed paths: M ext/fileinfo/libmagic/funcs.c M ext/fileinfo/tests/bug68996..phpt A ext/fileinfo/tests/bug71527.magic A ext/fileinfo/tests/bug71527.phpt Diff: diff --git a/ext/fileinfo/libmagic/funcs.c b/ext/fileinfo/libmagic/funcs.c index c6699d5..6ade713 100644 --- a/ext/fileinfo/libmagic/funcs.c +++ b/ext/fileinfo/libmagic/funcs.c @@ -403,7 +403,7 @@ file_check_mem(struct magic_set *ms, unsigned int level) size_t len; if (level >= ms->c.len) { - len = (ms->c.len += 20) * sizeof(*ms->c.li); + len = (ms->c.len += 20 + level) * sizeof(*ms->c.li); ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ? emalloc(len) : erealloc(ms->c.li, len)); diff --git a/ext/fileinfo/tests/bug68996.phpt b/ext/fileinfo/tests/bug68996.phpt index 9fa2190..da208d3 100644 --- a/ext/fileinfo/tests/bug68996.phpt +++ b/ext/fileinfo/tests/bug68996.phpt @@ -1,14 +1,11 @@ --TEST-- Bug #68996 (Invalid free of CG(interned_empty_string)) --SKIPIF-- -<?php -if (getenv("USE_ZEND_ALLOC") !== "0") { - print "skip Need Zend MM disabled"; -} -?> <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?> --INI-- html_errors=1 +--ENV-- +USE_ZEND_ALLOC=0 --FILE-- <?php finfo_open(FILEINFO_MIME_TYPE, "\xfc\x63"); @@ -19,4 +16,4 @@ finfo_open(FILEINFO_MIME_TYPE, "\xfc\x63"); <br /> <b>Warning</b>: : failed to open stream: No such file or directory in <b>%sbug68996.php</b> on line <b>%d</b><br /> <br /> -<b>Warning</b>: finfo_open(): in <b>%sbug68996.php</b> on line <b>%d</b><br /> +<b>Warning</b>: finfo_open(): Failed to load magic database at '%s�c'. in <b>%sbug68996.php</b> on line <b>%d</b><br /> diff --git a/ext/fileinfo/tests/bug71527.magic b/ext/fileinfo/tests/bug71527.magic new file mode 100644 index 0000000..14d7781 --- /dev/null +++ b/ext/fileinfo/tests/bug71527.magic @@ -0,0 +1 @@ +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> \ No newline at end of file diff --git a/ext/fileinfo/tests/bug71527.phpt b/ext/fileinfo/tests/bug71527.phpt new file mode 100644 index 0000000..f5b1d86 --- /dev/null +++ b/ext/fileinfo/tests/bug71527.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #71527 Buffer over-write in finfo_open with malformed magic file +--SKIPIF-- +<?php +if (!class_exists('finfo')) + die('skip no fileinfo extension'); +--ENV-- +USE_ZEND_ALLOC=0 +--FILE-- +<?php + $finfo = finfo_open(FILEINFO_NONE, dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug71527.magic"); + $info = finfo_file($finfo, __FILE__); + var_dump($info); +?> +--EXPECTF-- +Warning: finfo_open(): Failed to load magic database at '%sbug71527.magic'. in %sbug71527.php on line %d + +Warning: finfo_file() expects parameter 1 to be resource, boolean given in %sbug71527.php on line %d +bool(false)

« previous php.cvs (#91511) next »