Description: Fixes misuse of FD_SET()
Origin: vendor
Forwarded: no
Last-Update: 2010-01-18

--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -720,6 +720,7 @@ static int php_sock_array_to_fd_set(zval
 
 		php_sock = (php_socket*) zend_fetch_resource(element TSRMLS_CC, -1, le_socket_name, NULL, 1, le_socket);
 		if (!php_sock) continue; /* If element is not a resource, skip it */
+		if (php_sock->bsd_socket > FD_SETSIZE) continue; /* must ignore it */
 
 		PHP_SAFE_FD_SET(php_sock->bsd_socket, fds);
 		if (php_sock->bsd_socket > *max_fd) {
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -610,6 +610,8 @@ static int stream_array_to_fd_set(zval *
 		 * is not displayed.
 		 * */
 		if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL, (void*)&this_fd, 1) && this_fd >= 0) {
+			if (this_fd > FD_SETSIZE)
+				continue;
 
 			PHP_SAFE_FD_SET(this_fd, fds);
 
