]> granicus.if.org Git - php/commitdiff
- Added check for empty file name
authorFelipe Pena <felipe@php.net>
Tue, 26 Aug 2008 15:03:33 +0000 (15:03 +0000)
committerFelipe Pena <felipe@php.net>
Tue, 26 Aug 2008 15:03:33 +0000 (15:03 +0000)
ext/fileinfo/fileinfo.c
ext/fileinfo/tests/finfo_file_001.phpt [new file with mode: 0644]

index e291ac9d36ea01df05714526b1f3e41429eb6a5b..0824ef1a96222393877b1ef44c0d1537178f812a 100644 (file)
@@ -448,11 +448,12 @@ static void _php_finfo_get_type(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ *
                        }
                } else { /* local file */
                        char resolved_path[MAXPATHLEN];
-                       if (!VCWD_REALPATH(buffer, resolved_path)) {
+
+                       if (buffer_len && VCWD_REALPATH(buffer, resolved_path)) {
+                               ret_val = (char *) magic_file(finfo->magic, buffer);
+                       } else {
                                RETURN_FALSE;
                        }
-
-                       ret_val = (char *) magic_file(finfo->magic, buffer);
                        goto common;
                }
        } else { /* buffer */
diff --git a/ext/fileinfo/tests/finfo_file_001.phpt b/ext/fileinfo/tests/finfo_file_001.phpt
new file mode 100644 (file)
index 0000000..6ef8e27
--- /dev/null
@@ -0,0 +1,17 @@
+--TEST--
+finfo_file(): Testing file names
+--FILE--
+<?php
+
+$fp = finfo_open();
+var_dump(finfo_file($fp, ''));
+var_dump(finfo_file($fp, NULL));
+var_dump(finfo_file($fp, '.'));
+var_dump(finfo_file($fp, '&'));
+
+?>
+--EXPECT--
+bool(false)
+bool(false)
+string(9) "directory"
+bool(false)