From a620b7904023202b8b4a5d7792368bd752c432e9 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sun, 15 Feb 2015 22:54:05 +0800 Subject: [PATCH] Fixed bug #69054 (Null dereference in readline_(read|write)_history() without parameters) --- NEWS | 4 ++++ ext/readline/readline.c | 5 +++-- ext/readline/tests/bug69054.phpt | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 ext/readline/tests/bug69054.phpt diff --git a/NEWS b/NEWS index a0ffd3e08c..3cb896089d 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,10 @@ PHP NEWS . Fixed bug #68638 (pg_update() fails to store infinite values). (william dot welter at 4linux dot com dot br, Laruence) +- Readline: + . Fixed bug #69054 (Null dereference in readline_(read|write)_history() without + parameters). (Laruence) + - CGI: . Fixed bug #69015 (php-cgi's getopt does not see $argv). (Laruence) diff --git a/ext/readline/readline.c b/ext/readline/readline.c index f48194a439..8cf7734b62 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -400,12 +400,13 @@ PHP_FUNCTION(readline_read_history) return; } - if (php_check_open_basedir(arg TSRMLS_CC)) { + if (arg && php_check_open_basedir(arg TSRMLS_CC)) { RETURN_FALSE; } /* XXX from & to NYI */ if (read_history(arg)) { + /* If filename is NULL, then read from `~/.history' */ RETURN_FALSE; } else { RETURN_TRUE; @@ -424,7 +425,7 @@ PHP_FUNCTION(readline_write_history) return; } - if (php_check_open_basedir(arg TSRMLS_CC)) { + if (arg && php_check_open_basedir(arg TSRMLS_CC)) { RETURN_FALSE; } diff --git a/ext/readline/tests/bug69054.phpt b/ext/readline/tests/bug69054.phpt new file mode 100644 index 0000000000..f17f803ea4 --- /dev/null +++ b/ext/readline/tests/bug69054.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #69054 (Null dereference in readline_(read|write)_history() without parameters) +--SKIPIF-- + +--INI-- +open_basedir=/tmp +--FILE-- + +==DONE== +--EXPECT-- +==DONE== -- 2.40.0