diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-10-12 14:46:36 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-10-12 14:46:36 +0200 |
commit | 993463a65e775d1cc7ca7099c07dc79f88091058 (patch) | |
tree | 381eb503e06a97fe38b5a474fd2effe69c2d3b9a /ext/sockets/multicast.c | |
parent | f22608913c702366d4656f98be26633cd086a4db (diff) | |
parent | 586f8515d5ff6e16700ea1ba0d6e196e2c59b45d (diff) | |
download | php-git-993463a65e775d1cc7ca7099c07dc79f88091058.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78665: Multicasting may leak memory
Diffstat (limited to 'ext/sockets/multicast.c')
-rw-r--r-- | ext/sockets/multicast.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c index 476aaeed64..4ed32d2518 100644 --- a/ext/sockets/multicast.c +++ b/ext/sockets/multicast.c @@ -646,6 +646,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; @@ -654,9 +655,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; @@ -686,6 +689,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; @@ -694,9 +698,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}; |