]> granicus.if.org Git - php/commitdiff
Fix double free when socket_accept fails
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 11 Nov 2020 11:48:25 +0000 (12:48 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 11 Nov 2020 11:48:25 +0000 (12:48 +0100)
ext/sockets/sockets.c
ext/sockets/tests/socket_accept_failure.phpt [new file with mode: 0644]

index 0b21c4f6843ff37ced726da2888515fdb02bb628..6118610cac3dba1f1c882aa729e0b864eae2ad45 100644 (file)
@@ -272,7 +272,6 @@ static int php_accept_connect(php_socket *in_sock, php_socket *out_sock, struct
 
        if (IS_INVALID_SOCKET(out_sock)) {
                PHP_SOCKET_ERROR(out_sock, "unable to accept incoming connection", errno);
-               efree(out_sock);
                return 0;
        }
 
diff --git a/ext/sockets/tests/socket_accept_failure.phpt b/ext/sockets/tests/socket_accept_failure.phpt
new file mode 100644 (file)
index 0000000..5229874
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+socket_accept() failure
+--FILE--
+<?php
+
+$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+var_dump(socket_accept($socket));
+
+?>
+--EXPECTF--
+Warning: socket_accept(): unable to accept incoming connection [%d]: %s in %s on line %d
+bool(false)