diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index eb4e58b3988e..867723f42de2 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -1206,6 +1206,7 @@ static void to_zval_read_iov(const char *msghdr_c, zval *zv, res_context *ctx) if (iovlen > UINT_MAX) { do_to_zval_err(ctx, "unexpectedly large value for iov_len: %lu", (unsigned long)iovlen); + return; } array_init_size(zv, (uint32_t)iovlen); diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c index e258ca3e66e9..50808ef5b3aa 100644 --- a/ext/sockets/multicast.c +++ b/ext/sockets/multicast.c @@ -635,7 +635,7 @@ zend_result php_if_index_to_addr4(unsigned if_index, php_socket *php_sock, struc retry: retval = GetIpAddrTable(addr_table, &size, 0); if (retval == ERROR_INSUFFICIENT_BUFFER) { - erealloc(addr_table, size); + addr_table = erealloc(addr_table, size); goto retry; } if (retval != NO_ERROR) { @@ -677,7 +677,7 @@ zend_result php_add4_to_if_index(struct in_addr *addr, php_socket *php_sock, uns retry: retval = GetIpAddrTable(addr_table, &size, 0); if (retval == ERROR_INSUFFICIENT_BUFFER) { - erealloc(addr_table, size); + addr_table = erealloc(addr_table, size); goto retry; } if (retval != NO_ERROR) { diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 79d5f77856d5..565a2d791bca 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -1839,6 +1839,7 @@ PHP_FUNCTION(socket_get_option) #endif optlen = sizeof(other_val); + other_val = 0; if (getsockopt(php_sock->bsd_socket, level, optname, (char*)&other_val, &optlen) != 0) { PHP_SOCKET_ERROR(php_sock, "Unable to retrieve socket option", errno); @@ -1864,6 +1865,10 @@ PHP_FUNCTION(socket_set_option) int timeout; #else struct timeval tv; +#endif +#ifdef SO_ATTACH_REUSEPORT_CBPF + struct sock_filter cbpf[8] = {0}; + struct sock_fprog bpfprog; #endif zend_long level, optname; void *opt_ptr; @@ -2074,8 +2079,6 @@ PHP_FUNCTION(socket_set_option) optname = SO_DETACH_BPF; } else { uint32_t k = (uint32_t)cbpf_val; - static struct sock_filter cbpf[8] = {0}; - static struct sock_fprog bpfprog; switch (k) { case SKF_AD_CPU: @@ -2357,6 +2360,7 @@ PHP_FUNCTION(socket_import_stream) retsock = Z_SOCKET_P(return_value); if (!socket_import_file_descriptor(socket, retsock)) { + retsock->bsd_socket = -1; zval_ptr_dtor(return_value); RETURN_FALSE; }