]> granicus.if.org Git - php/commitdiff
MFH(r-1.336): added missing sanity check in fgetcsv()
authorMoriyoshi Koizumi <moriyoshi@php.net>
Mon, 28 Apr 2003 15:11:14 +0000 (15:11 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Mon, 28 Apr 2003 15:11:14 +0000 (15:11 +0000)
Partly synchronised indents with HEAD
# please merge CS fixes to branches too, or leave them as is :(

ext/standard/file.c

index c82424a7d6b34e801291db06eceae15be2e01be6..f3dd39e7d00c81d90ecdb69f042b6adf92e57542 100644 (file)
@@ -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);