iliaa           Mon Dec 18 14:57:20 2006 UTC

  Modified files:              
    /php-src/ext/filter filter_private.h logical_filters.c 
    /php-src/ext/filter/tests   044.phpt 042.phpt 
  Log:
  MFB: Fixed bugs with trimming of spaces
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter_private.h?r1=1.17&r2=1.18&diff_format=u
Index: php-src/ext/filter/filter_private.h
diff -u php-src/ext/filter/filter_private.h:1.17 
php-src/ext/filter/filter_private.h:1.18
--- php-src/ext/filter/filter_private.h:1.17    Tue Dec  5 01:23:42 2006
+++ php-src/ext/filter/filter_private.h Mon Dec 18 14:57:20 2006
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: filter_private.h,v 1.17 2006/12/05 01:23:42 pajoye Exp $ */
+/* $Id: filter_private.h,v 1.18 2006/12/18 14:57:20 iliaa Exp $ */
 
 #ifndef FILTER_PRIVATE_H
 #define FILTER_PRIVATE_H
@@ -88,25 +88,30 @@
 || (id >= FILTER_VALIDATE_ALL && id <= FILTER_VALIDATE_LAST) \
 || id == FILTER_CALLBACK)
 
+#define RETURN_VALIDATION_FAILED       \
+       zval_dtor(value);       \
+       if (flags & FILTER_NULL_ON_FAILURE) {   \
+               ZVAL_NULL(value);       \
+       } else {        \
+               ZVAL_FALSE(value);      \
+       }       \
+       return; \
+
 #define PHP_FILTER_TRIM_DEFAULT(p, len, end) { \
-       while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\v') { \
+       while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\v' || *p == 
'\n') { \
                p++; \
                len--; \
        } \
-       start = p; \
+        if (len < 1) { \
+          RETURN_VALIDATION_FAILED \
+        } \
+        start = p; \
        end = p + len - 1; \
-       if (*end == ' ' || *end == '\t' || *end == '\r' || *end == '\v') { \
-               unsigned int i; \
-               for (i = len - 1; i >= 0; i--) { \
-                       if (!(p[i] == ' ' || p[i] == '\t' || p[i] == '\r' || 
p[i] == '\v')) { \
-                               break; \
-                       } \
-               } \
-               i++; \
-               p[i] = '\0'; \
-               end = p + i - 1; \
-               len = (int) (end - p) + 1; \
+       while (*end == ' ' || *end == '\t' || *end == '\r' || *end == '\v' || 
*end == '\n') { \
+           end--; \
        } \
+       *(end + 1) = '\0'; \
+       len = (end - p + 1); \
 }
 
 
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/logical_filters.c?r1=1.17&r2=1.18&diff_format=u
Index: php-src/ext/filter/logical_filters.c
diff -u php-src/ext/filter/logical_filters.c:1.17 
php-src/ext/filter/logical_filters.c:1.18
--- php-src/ext/filter/logical_filters.c:1.17   Sun Dec 17 12:02:19 2006
+++ php-src/ext/filter/logical_filters.c        Mon Dec 18 14:57:20 2006
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: logical_filters.c,v 1.17 2006/12/17 12:02:19 bjori Exp $ */
+/* $Id: logical_filters.c,v 1.18 2006/12/18 14:57:20 iliaa Exp $ */
 
 #include "php_filter.h"
 #include "filter_private.h"
@@ -68,15 +68,6 @@
 #define FORMAT_IPV4    4
 #define FORMAT_IPV6    6
 
-#define RETURN_VALIDATION_FAILED       \
-       zval_dtor(value);       \
-       if (flags & FILTER_NULL_ON_FAILURE) {   \
-               ZVAL_NULL(value);       \
-       } else {        \
-               ZVAL_FALSE(value);      \
-       }       \
-       return; \
-
 static int php_filter_parse_int(const char *str, unsigned int str_len, long 
*ret TSRMLS_DC) { /* {{{ */
        long ctx_value = 0;
        long sign = 1;
@@ -312,6 +303,9 @@
        }
 
        str = Z_STRVAL_P(value);
+
+       PHP_FILTER_TRIM_DEFAULT(str, len, end);
+
        start = str;
 
        if (len == 1) {
@@ -339,8 +333,6 @@
                dec_sep = *default_decimal;
        }
 
-       PHP_FILTER_TRIM_DEFAULT(str, len, end);
-
        if (*str == '-') {
                sign = -1;
                str++;
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/tests/044.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/filter/tests/044.phpt
diff -u /dev/null php-src/ext/filter/tests/044.phpt:1.2
--- /dev/null   Mon Dec 18 14:57:20 2006
+++ php-src/ext/filter/tests/044.phpt   Mon Dec 18 14:57:20 2006
@@ -0,0 +1,21 @@
+--TEST--
+Integer validation with spaces
+--FILE--
+<?php 
+$vals = array(
+"      
+ ",
+" ",
+" 123",
+" 123.01 ",
+);
+
+foreach ($vals as $var) {
+       var_dump(filter_var($var, FILTER_VALIDATE_FLOAT));
+}
+?>
+--EXPECT--
+bool(false)
+bool(false)
+float(123)
+float(123.01)
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/tests/042.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/filter/tests/042.phpt
diff -u php-src/ext/filter/tests/042.phpt:1.2 
php-src/ext/filter/tests/042.phpt:1.3
--- php-src/ext/filter/tests/042.phpt:1.2       Mon Dec 18 04:24:38 2006
+++ php-src/ext/filter/tests/042.phpt   Mon Dec 18 14:57:20 2006
@@ -5,6 +5,13 @@
 $var = 'XYZ< script>alert(/ext/filter+bypass/);< /script>ABC';
 $a = filter_var($var, FILTER_SANITIZE_STRING, array("flags" => 
FILTER_FLAG_STRIP_LOW));
 echo $a . "\n";
+
+$var = 'XYZ<
+script>alert(/ext/filter+bypass/);<
+/script>ABC';
+$a = filter_var($var, FILTER_SANITIZE_STRING, array("flags" => 
FILTER_FLAG_STRIP_LOW));
+echo $a . "\n";
 ?>
 --EXPECT--
 XYZalert(/ext/filter+bypass/);ABC
+XYZalert(/ext/filter+bypass/);ABC

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to