summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Lopes <glopes@nebm.ist.utl.pt>2013-02-24 03:40:22 +0100
committerGustavo Lopes <glopes@nebm.ist.utl.pt>2013-02-24 03:50:38 +0100
commit59ec22b370a74e9af62fdea68550feade6f36c81 (patch)
treefd7971316d30d0c3092681e5cf2eb8adbb0e6663
parent189fbfd53b087099689b9198407ee0c50b17fc61 (diff)
downloadphp-git-59ec22b370a74e9af62fdea68550feade6f36c81.tar.gz
sendrecvmsg_shutdown function moved to mshutdown
The function php_socket_sendrecvmsg_shutdown() should have been called in MSHUTDOWN, not RSHUTDOWN. Bug only on TSRM builds. Should fix bug #64287.
-rw-r--r--NEWS4
-rw-r--r--ext/sockets/sockets.c28
2 files changed, 23 insertions, 9 deletions
diff --git a/NEWS b/NEWS
index 2fb0da703e..b75c0524cb 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,10 @@ PHP NEWS
. Fixed bug #49348 (Uninitialized ++$foo->bar; does not cause a notice).
(Stas)
+- Sockets:
+ . Fixed bug #64287 (sendmsg/recvmsg shutdown handler causes segfault).
+ (Gustavo)
+
21 Feb 2013, PHP 5.5.0 Alpha 5
- Core:
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 5ecc014596..f305fa07d8 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -69,7 +69,6 @@
#include "sendrecvmsg.h"
ZEND_DECLARE_MODULE_GLOBALS(sockets)
-static PHP_GINIT_FUNCTION(sockets);
#ifndef MSG_WAITALL
#ifdef LINUX
@@ -271,9 +270,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_socket_cmsg_space, 0, 0, 2)
ZEND_END_ARG_INFO()
/* }}} */
-PHP_MINIT_FUNCTION(sockets);
-PHP_MINFO_FUNCTION(sockets);
-PHP_RSHUTDOWN_FUNCTION(sockets);
+static PHP_GINIT_FUNCTION(sockets);
+static PHP_MINIT_FUNCTION(sockets);
+static PHP_MSHUTDOWN_FUNCTION(sockets);
+static PHP_MINFO_FUNCTION(sockets);
+static PHP_RSHUTDOWN_FUNCTION(sockets);
PHP_FUNCTION(socket_select);
PHP_FUNCTION(socket_create_listen);
@@ -356,7 +357,7 @@ zend_module_entry sockets_module_entry = {
"sockets",
sockets_functions,
PHP_MINIT(sockets),
- NULL,
+ PHP_MSHUTDOWN(sockets),
NULL,
PHP_RSHUTDOWN(sockets),
PHP_MINFO(sockets),
@@ -607,7 +608,7 @@ static PHP_GINIT_FUNCTION(sockets)
/* {{{ PHP_MINIT_FUNCTION
*/
-PHP_MINIT_FUNCTION(sockets)
+static PHP_MINIT_FUNCTION(sockets)
{
le_socket = zend_register_list_destructors_ex(php_destroy_socket, NULL, le_socket_name, module_number);
@@ -728,9 +729,19 @@ PHP_MINIT_FUNCTION(sockets)
}
/* }}} */
+/* {{{ PHP_MSHUTDOWN_FUNCTION
+ */
+static PHP_MSHUTDOWN_FUNCTION(sockets)
+{
+ php_socket_sendrecvmsg_shutdown(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+
+ return SUCCESS;
+}
+/* }}} */
+
/* {{{ PHP_MINFO_FUNCTION
*/
-PHP_MINFO_FUNCTION(sockets)
+static PHP_MINFO_FUNCTION(sockets)
{
php_info_print_table_start();
php_info_print_table_row(2, "Sockets Support", "enabled");
@@ -739,13 +750,12 @@ PHP_MINFO_FUNCTION(sockets)
/* }}} */
/* {{{ PHP_RSHUTDOWN_FUNCTION */
-PHP_RSHUTDOWN_FUNCTION(sockets)
+static PHP_RSHUTDOWN_FUNCTION(sockets)
{
if (SOCKETS_G(strerror_buf)) {
efree(SOCKETS_G(strerror_buf));
SOCKETS_G(strerror_buf) = NULL;
}
- php_socket_sendrecvmsg_shutdown(SHUTDOWN_FUNC_ARGS_PASSTHRU);
return SUCCESS;
}