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