summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2003-04-28 15:11:14 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2003-04-28 15:11:14 +0000
commit302dc219c15818169359f641653d4f9ec8ee6648 (patch)
tree87dbcc99fdd9e66d3d55de32d5875792dd979518
parent7aef25bc3883b03f233cf33b41cf1c7a1aabe937 (diff)
downloadphp-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.c61
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);