PHP :: Bug #61088 :: Memory leak in readline_callback_handler_install
| Bug #61088 | Memory leak in readline_callback_handler_install | ||||
|---|---|---|---|---|---|
| Submitted: | 2012-02-14 18:14 UTC | Modified: | 2012-03-11 09:20 UTC | ||
| From: | nikic@php.net | Assigned: | laruence (profile) | ||
| Status: | Closed | Package: | *General Issues | ||
| PHP Version: | Irrelevant | OS: | |||
| Private report: | No | CVE-ID: | None | ||
[2012-02-14 18:14 UTC] nikic@php.net
Description:
------------
$callback = function() {};
readline_callback_handler_install('***', $callback);
Leaks:
***[Tue Feb 14 19:01:11 2012] Script: 'reproduceCode3_memoryLeak.php'
/home/nikic/dev/php-src/ext/readline/readline.c(579) : Freeing 0xB78618F4 (20
bytes), script=reproduceCode3_memoryLeak.php
=== Total 1 memory leaks detected ===
Reason is incorrect copying of a zval in
http://lxr.php.net/opengrok/xref/PHP_TRUNK/ext/readline/readline.c#579.
I was able to fix it using this simple patch:
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 22521e6..c9389fc 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -576,9 +576,8 @@ PHP_FUNCTION(readline_callback_handler_install)
FREE_ZVAL(_prepped_callback);
}
- MAKE_STD_ZVAL(_prepped_callback);
- *_prepped_callback = *callback;
- zval_copy_ctor(_prepped_callback);
+ ALLOC_ZVAL(_prepped_callback);
+ MAKE_COPY_ZVAL(&callback, _prepped_callback);
rl_callback_handler_install(prompt, php_rl_callback_handler);
Patches
readline.patch (last revision 2012-02-14 18:14 UTC by nikic@php.net)Pull Requests
History
AllCommentsChangesGit/SVN commits