From: Dmitry Stogov Date: Fri, 16 Nov 2007 14:24:08 +0000 (+0000) Subject: Fixed crash (Serg) X-Git-Tag: RELEASE_1_3_1~625 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=117a6d77e1c6057e24df4c861415c6fa6cd36999;p=php Fixed crash (Serg) --- diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c index 16e5ca057c..81663a15d1 100644 --- a/ext/standard/filestat.c +++ b/ext/standard/filestat.c @@ -396,12 +396,12 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */ int ret; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz/", &filename, &filename_len, &group) == FAILURE) { - return; + RETURN_FALSE; } if (Z_TYPE_P(group) == IS_LONG) { gid = (gid_t)Z_LVAL_P(group); - } else { + } else if (Z_TYPE_P(group) == IS_STRING) { #if defined(ZTS) && defined(HAVE_GETGRNAM_R) && defined(_SC_GETGR_R_SIZE_MAX) struct group gr; struct group *retgrptr; @@ -429,6 +429,9 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */ } 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)); + RETURN_FALSE; } if (PG(safe_mode) &&(!php_checkuid(filename, NULL, CHECKUID_ALLOW_FILE_NOT_EXISTS))) { diff --git a/ext/standard/tests/file/chgrp.phpt b/ext/standard/tests/file/chgrp.phpt index d0ebce36a6..4eaa908b52 100644 --- a/ext/standard/tests/file/chgrp.phpt +++ b/ext/standard/tests/file/chgrp.phpt @@ -5,5 +5,6 @@ chgrp() with NULL as group name chgrp("sjhgfskhagkfdgskjfhgskfsdgfkdsajf", NULL); echo "ALIVE\n"; ?> ---EXPECT-- +--EXPECTF-- +Warning: chgrp(): parameter 2 should be string or integer, null given in %schgrp.php on line 2 ALIVE