diff options
author | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-04-28 15:11:14 +0000 |
---|---|---|
committer | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-04-28 15:11:14 +0000 |
commit | 302dc219c15818169359f641653d4f9ec8ee6648 (patch) | |
tree | 87dbcc99fdd9e66d3d55de32d5875792dd979518 | |
parent | 7aef25bc3883b03f233cf33b41cf1c7a1aabe937 (diff) | |
download | php-git-302dc219c15818169359f641653d4f9ec8ee6648.tar.gz |
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 :(
-rw-r--r-- | ext/standard/file.c | 61 |
1 files changed, 31 insertions, 30 deletions
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); |