summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-10-12 14:44:35 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2019-10-12 14:44:55 +0200
commit7439d48bea8583c6986478f6e4de087c6585df0f (patch)
tree010c8e1b16354319c2beafe3b5abc1bf6ad5fe2e
parent74ac3dd6e260ea23aeb5c8b91953aff2be28f254 (diff)
parent900bdcbd0311b13eef5a1b9951ef0e7374fce6f7 (diff)
downloadphp-git-7439d48bea8583c6986478f6e4de087c6585df0f.tar.gz
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2: Fix #78665: Multicasting may leak memory
-rw-r--r--NEWS3
-rw-r--r--ext/sockets/multicast.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index facfaf0724..1e00cc818c 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ PHP NEWS
. Fixed bug #78642 (Wrong libiconv version displayed). (gedas at martynas,
cmb).
+- Sockets:
+ . Fixed bug #78665 (Multicasting may leak memory). (cmb)
+
24 Oct 2019, PHP 7.3.11
- Core:
diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c
index 23e9d1b348..2df524f4e7 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};