summaryrefslogtreecommitdiff
path: root/ext/sockets/multicast.c
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-10-12 14:46:36 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2019-10-12 14:46:36 +0200
commit993463a65e775d1cc7ca7099c07dc79f88091058 (patch)
tree381eb503e06a97fe38b5a474fd2effe69c2d3b9a /ext/sockets/multicast.c
parentf22608913c702366d4656f98be26633cd086a4db (diff)
parent586f8515d5ff6e16700ea1ba0d6e196e2c59b45d (diff)
downloadphp-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.c6
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};