jani Wed Nov 21 11:28:26 2007 UTC Modified files: /php-src/ext/standard filestat.c Log: - Fix crash when chown() 2nd parameter is something else than integer or string http://cvs.php.net/viewvc.cgi/php-src/ext/standard/filestat.c?r1=1.169&r2=1.170&diff_format=u Index: php-src/ext/standard/filestat.c diff -u php-src/ext/standard/filestat.c:1.169 php-src/ext/standard/filestat.c:1.170 --- php-src/ext/standard/filestat.c:1.169 Mon Nov 19 15:55:48 2007 +++ php-src/ext/standard/filestat.c Wed Nov 21 11:28:26 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filestat.c,v 1.169 2007/11/19 15:55:48 dmitry Exp $ */ +/* $Id: filestat.c,v 1.170 2007/11/21 11:28:26 jani Exp $ */ #include "php.h" #include "fopen_wrappers.h" @@ -434,7 +434,8 @@ if (Z_TYPE_P(group) == IS_LONG) { gid = (gid_t)Z_LVAL_P(group); } else if (Z_TYPE_P(group) == IS_STRING || - Z_TYPE_P(group) == IS_UNICODE) { + Z_TYPE_P(group) == IS_UNICODE + ) { if (Z_TYPE_P(group) == IS_UNICODE) { zval_unicode_to_string(group TSRMLS_CC); } @@ -466,7 +467,7 @@ gid = gr->gr_gid; #endif } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "parameter 2 should be string or integer, %s given",zend_zval_type_name(group)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "parameter 2 should be string or integer, %s given", zend_zval_type_name(group)); RETURN_FALSE; } @@ -548,8 +549,13 @@ } if (Z_TYPE_P(user) == IS_LONG) { - uid = (uid_t)Z_LVAL_P(user); - } else { + uid = (uid_t) Z_LVAL_P(user); + } else if (Z_TYPE_P(user) == IS_STRING || + Z_TYPE_P(user) == IS_UNICODE + ) { + if (Z_TYPE_P(user) == IS_UNICODE) { + zval_unicode_to_string(user TSRMLS_CC); + } #if defined(ZTS) && defined(_SC_GETPW_R_SIZE_MAX) && defined(HAVE_GETPWNAM_R) struct passwd pw; struct passwd *retpwptr = NULL; @@ -577,6 +583,9 @@ } uid = pw->pw_uid; #endif + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "parameter 2 should be string or integer, %s given", zend_zval_type_name(user)); + RETURN_FALSE; } if (filename_type == IS_UNICODE) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php