From: Moriyoshi Koizumi Date: Mon, 28 Apr 2003 15:11:14 +0000 (+0000) Subject: MFH(r-1.336): added missing sanity check in fgetcsv() X-Git-Tag: php-4.3.2RC2~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=302dc219c15818169359f641653d4f9ec8ee6648;p=php MFH(r-1.336): added missing sanity check in fgetcsv() Partly synchronised indents with HEAD # please merge CS fixes to branches too, or leave them as is :( --- diff --git a/ext/standard/file.c b/ext/standard/file.c index c82424a7d6..f3dd39e7d0 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -2121,49 +2121,50 @@ PHP_FUNCTION(fgetcsv) php_stream *stream; switch(ZEND_NUM_ARGS()) { - case 2: - if (zend_get_parameters_ex(2, &fd, &bytes) == FAILURE) { - WRONG_PARAM_COUNT; - } - break; + case 2: + if (zend_get_parameters_ex(2, &fd, &bytes) == FAILURE) { + WRONG_PARAM_COUNT; + } + break; - case 3: - if (zend_get_parameters_ex(3, &fd, &bytes, &p_delim) == FAILURE) { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(p_delim); - /* Make sure that there is at least one character in string */ - if (Z_STRLEN_PP(p_delim) < 1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter must be a character"); - return; - } - /* use first character from string */ - delimiter = Z_STRVAL_PP(p_delim)[0]; - break; + case 3: + if (zend_get_parameters_ex(3, &fd, &bytes, &p_delim) == FAILURE) { + WRONG_PARAM_COUNT; + } + break; - case 4: - if (zend_get_parameters_ex(4, &fd, &bytes, &p_delim, &p_enclosure) == FAILURE) { + case 4: + if (zend_get_parameters_ex(4, &fd, &bytes, &p_delim, &p_enclosure) == FAILURE) { + WRONG_PARAM_COUNT; + } + break; + + default: WRONG_PARAM_COUNT; - } + /* NOTREACHED */ + break; + } + + if (ZEND_NUM_ARGS() >= 3) { convert_to_string_ex(p_delim); /* Make sure that there is at least one character in string */ if (Z_STRLEN_PP(p_delim) < 1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter must be a character"); - return; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "delimiter must be a character"); + RETURN_FALSE; } /* use first character from string */ delimiter = Z_STRVAL_PP(p_delim)[0]; + } + if (ZEND_NUM_ARGS() >= 4) { convert_to_string_ex(p_enclosure); + /* Make sure that there is at least one character in string */ + if (Z_STRLEN_PP(p_enclosure) < 1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "enclosure must be a character"); + RETURN_FALSE; + } /* use first character from string */ enclosure = Z_STRVAL_PP(p_enclosure)[0]; - - break; - - default: - WRONG_PARAM_COUNT; - /* NOTREACHED */ - break; } php_stream_from_zval(stream, fd);