diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-03-11 11:32:46 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-03-11 11:32:46 +0100 |
commit | f078bca729f4ab1bc2d60370e83bfa561f86b88d (patch) | |
tree | e65c972046ef154be849d960b7531c8b3c376bc2 /main/streams | |
parent | dcbf020f76a2568b855508c812f68170884398da (diff) | |
parent | 8657f0308481263a87d2dd09b8553d58f543a74a (diff) | |
download | php-git-f078bca729f4ab1bc2d60370e83bfa561f86b88d.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #78210: Invalid pointer address
Diffstat (limited to 'main/streams')
-rw-r--r-- | main/streams/xp_socket.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index d37b2c30b3..c7cab6353f 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -276,6 +276,12 @@ static inline int sock_recvfrom(php_netstream_data_t *sock, char *buf, size_t bu socklen_t sl = sizeof(sa); ret = recvfrom(sock->socket, buf, XP_SOCK_BUF_SIZE(buflen), flags, (struct sockaddr*)&sa, &sl); ret = (ret == SOCK_CONN_ERR) ? -1 : ret; +#ifdef PHP_WIN32 + /* POSIX discards excess bytes without signalling failure; emulate this on Windows */ + if (ret == -1 && WSAGetLastError() == WSAEMSGSIZE) { + ret = buflen; + } +#endif if (sl) { php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, textaddr, addr, addrlen); |