Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #78665: Multicasting may leak memory
This commit is contained in:
Christoph M. Becker 2019-10-12 14:45:40 +02:00
commit 586f8515d5
2 changed files with 9 additions and 0 deletions

3
NEWS
View file

@ -38,6 +38,9 @@ PHP NEWS
. Fixed bug #75245 (Don't set content of elements with only whitespaces). . Fixed bug #75245 (Don't set content of elements with only whitespaces).
(eriklundin) (eriklundin)
- Sockets:
. Fixed bug #78665 (Multicasting may leak memory). (cmb)
- Standard: - Standard:
. Fixed bug #76859 (stream_get_line skips data if used with data-generating . Fixed bug #76859 (stream_get_line skips data if used with data-generating
filter). (kkopachev) filter). (kkopachev)

View file

@ -648,6 +648,7 @@ retry:
goto retry; goto retry;
} }
if (retval != NO_ERROR) { if (retval != NO_ERROR) {
efree(addr_table);
php_error_docref(NULL, E_WARNING, php_error_docref(NULL, E_WARNING,
"GetIpAddrTable failed with error %lu", retval); "GetIpAddrTable failed with error %lu", retval);
return FAILURE; return FAILURE;
@ -656,9 +657,11 @@ retry:
MIB_IPADDRROW r = addr_table->table[i]; MIB_IPADDRROW r = addr_table->table[i];
if (r.dwIndex == if_index) { if (r.dwIndex == if_index) {
out_addr->s_addr = r.dwAddr; out_addr->s_addr = r.dwAddr;
efree(addr_table);
return SUCCESS; return SUCCESS;
} }
} }
efree(addr_table);
php_error_docref(NULL, E_WARNING, php_error_docref(NULL, E_WARNING,
"No interface with index %u was found", if_index); "No interface with index %u was found", if_index);
return FAILURE; return FAILURE;
@ -688,6 +691,7 @@ retry:
goto retry; goto retry;
} }
if (retval != NO_ERROR) { if (retval != NO_ERROR) {
efree(addr_table);
php_error_docref(NULL, E_WARNING, php_error_docref(NULL, E_WARNING,
"GetIpAddrTable failed with error %lu", retval); "GetIpAddrTable failed with error %lu", retval);
return FAILURE; return FAILURE;
@ -696,9 +700,11 @@ retry:
MIB_IPADDRROW r = addr_table->table[i]; MIB_IPADDRROW r = addr_table->table[i];
if (r.dwAddr == addr->s_addr) { if (r.dwAddr == addr->s_addr) {
*if_index = r.dwIndex; *if_index = r.dwIndex;
efree(addr_table);
return SUCCESS; return SUCCESS;
} }
} }
efree(addr_table);
{ {
char addr_str[17] = {0}; char addr_str[17] = {0};