From 900bdcbd0311b13eef5a1b9951ef0e7374fce6f7 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 12 Oct 2019 13:49:39 +0200 Subject: Fix #78665: Multicasting may leak memory --- ext/sockets/multicast.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'ext/sockets') diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c index e32b2d8457..672e34e1d3 100644 --- a/ext/sockets/multicast.c +++ b/ext/sockets/multicast.c @@ -652,6 +652,7 @@ retry: goto retry; } if (retval != NO_ERROR) { + efree(addr_table); php_error_docref(NULL, E_WARNING, "GetIpAddrTable failed with error %lu", retval); return FAILURE; @@ -660,9 +661,11 @@ retry: MIB_IPADDRROW r = addr_table->table[i]; if (r.dwIndex == if_index) { out_addr->s_addr = r.dwAddr; + efree(addr_table); return SUCCESS; } } + efree(addr_table); php_error_docref(NULL, E_WARNING, "No interface with index %u was found", if_index); return FAILURE; @@ -692,6 +695,7 @@ retry: goto retry; } if (retval != NO_ERROR) { + efree(addr_table); php_error_docref(NULL, E_WARNING, "GetIpAddrTable failed with error %lu", retval); return FAILURE; @@ -700,9 +704,11 @@ retry: MIB_IPADDRROW r = addr_table->table[i]; if (r.dwAddr == addr->s_addr) { *if_index = r.dwIndex; + efree(addr_table); return SUCCESS; } } + efree(addr_table); { char addr_str[17] = {0}; -- cgit v1.2.1