summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2014-01-20 08:38:53 +0100
committerRemi Collet <remi@php.net>2014-01-20 08:38:53 +0100
commit31d67bd35362c1ab570caccedfec3e24257b55c5 (patch)
tree1539db085dbd39daa28fef983ec2be73fe1e1cb5
parent4e55c6bffb9407b3013c90fcf3a840bfc5115ca2 (diff)
downloadphp-git-31d67bd35362c1ab570caccedfec3e24257b55c5.tar.gz
Fixed Bug #66412 readline_clear_history() with libedit causes segfault after #65714
Checking all libedit functions, this check is done in each functions (add_history, read_history, write_history, ...) but is missing in clear_history. Test coverage: readline_clear_history_001.phpt
-rw-r--r--NEWS4
-rw-r--r--ext/readline/readline.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index ce2d100799..f03180d859 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,10 @@ PHP NEWS
. Fixed bug #66298 (ext/opcache/Optimizer/zend_optimizer.c has dos-style
^M as lineend). (Laruence)
+- Readline
+ . Fixed Bug #66412 (readline_clear_history() with libedit causes segfault after
+ #65714). (Remi)
+
- Session
. Fixed bug #66469 (Session module is sending multiple set-cookie headers when
session.use_strict_mode=1) (Yasuo)
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index ecd5533350..4bd9103462 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -354,6 +354,11 @@ PHP_FUNCTION(readline_clear_history)
return;
}
+#if HAVE_LIBEDIT
+ /* clear_history is the only function where rl_initialize
+ is not call to ensure correct allocation */
+ using_history();
+#endif
clear_history();
RETURN_TRUE;