Browse Source

Added another bug fix to detect for negative values being passed into the

fd_*() functions, as passing negative values would cause PHP to segfault.
PHP-4.0.5
Chris Vandomelen 26 years ago
parent
commit
8ef1279f2b
  1. 15
      ext/sockets/sockets.c

15
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;
}

Loading…
Cancel
Save