From: Chris Vandomelen Date: Sun, 20 Aug 2000 19:48:42 +0000 (+0000) Subject: Added another bug fix to detect for negative values being passed into the X-Git-Tag: php-4.0.2RC1~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ef1279f2b47149e4d6bbb162b960eea6c5639ca;p=php Added another bug fix to detect for negative values being passed into the fd_*() functions, as passing negative values would cause PHP to segfault. --- diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 759f2c7b0e..eb48e91f6e 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -271,6 +271,11 @@ PHP_FUNCTION(fd_set) ZEND_FETCH_RESOURCE(the_set, fd_set *, set, -1, "File descriptor set", SOCKETSG(le_destroy)); + if (Z_LVAL_PP(fd) < 0) { + php_error(E_WARNING, "Can't set negative fd falues in a set"); + RETURN_FALSE; + } + FD_SET(Z_LVAL_PP(fd), the_set); RETURN_TRUE; @@ -293,6 +298,11 @@ PHP_FUNCTION(fd_clear) ZEND_FETCH_RESOURCE(the_set, fd_set *, set, -1, "File descriptor set", SOCKETSG(le_destroy)); + if (Z_LVAL_PP(fd) < 0) { + php_error(E_WARNING, "Can't clear negative fd values in a set"); + RETURN_FALSE; + } + FD_CLR(Z_LVAL_PP(fd), the_set); RETURN_TRUE; @@ -315,6 +325,11 @@ PHP_FUNCTION(fd_isset) ZEND_FETCH_RESOURCE(the_set, fd_set *, set, -1, "File descriptor set", SOCKETSG(le_destroy)); + if (Z_LVAL_PP(fd) < 0) { + php_error(E_WARNING, "Can't check for negative fd values in a set"); + RETURN_FALSE; + } + if (FD_ISSET(Z_LVAL_PP(fd), the_set)) { RETURN_TRUE; }