rasmus Wed, 31 Mar 2010 22:59:09 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=297245
Log: full_special_chars filter from trunk - approved by johannes Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/filter/filter.c U php/php-src/branches/PHP_5_3/ext/filter/filter_private.h U php/php-src/branches/PHP_5_3/ext/filter/php_filter.h U php/php-src/branches/PHP_5_3/ext/filter/sanitizing_filters.c Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-03-31 22:49:08 UTC (rev 297244) +++ php/php-src/branches/PHP_5_3/NEWS 2010-03-31 22:59:09 UTC (rev 297245) @@ -6,6 +6,7 @@ - Added stream filter support to mcrypt extension (ported from mcrypt_filter). (Stas) +- Added full_special_chars filter to ext/filter (Rasmus) - Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288). (Raphael Geissert) Modified: php/php-src/branches/PHP_5_3/ext/filter/filter.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/filter/filter.c 2010-03-31 22:49:08 UTC (rev 297244) +++ php/php-src/branches/PHP_5_3/ext/filter/filter.c 2010-03-31 22:59:09 UTC (rev 297245) @@ -52,6 +52,7 @@ { "stripped", FILTER_SANITIZE_STRING, php_filter_string }, { "encoded", FILTER_SANITIZE_ENCODED, php_filter_encoded }, { "special_chars", FILTER_SANITIZE_SPECIAL_CHARS, php_filter_special_chars }, + { "full_special_chars", FILTER_SANITIZE_FULL_SPECIAL_CHARS, php_filter_full_special_chars }, { "unsafe_raw", FILTER_UNSAFE_RAW, php_filter_unsafe_raw }, { "email", FILTER_SANITIZE_EMAIL, php_filter_email }, { "url", FILTER_SANITIZE_URL, php_filter_url }, @@ -238,6 +239,7 @@ REGISTER_LONG_CONSTANT("FILTER_SANITIZE_STRIPPED", FILTER_SANITIZE_STRING, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_SANITIZE_ENCODED", FILTER_SANITIZE_ENCODED, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_SANITIZE_SPECIAL_CHARS", FILTER_SANITIZE_SPECIAL_CHARS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_FULL_SPECIAL_CHARS", FILTER_SANITIZE_SPECIAL_CHARS, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_SANITIZE_EMAIL", FILTER_SANITIZE_EMAIL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_SANITIZE_URL", FILTER_SANITIZE_URL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_SANITIZE_NUMBER_INT", FILTER_SANITIZE_NUMBER_INT, CONST_CS | CONST_PERSISTENT); Modified: php/php-src/branches/PHP_5_3/ext/filter/filter_private.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/filter/filter_private.h 2010-03-31 22:49:08 UTC (rev 297244) +++ php/php-src/branches/PHP_5_3/ext/filter/filter_private.h 2010-03-31 22:59:09 UTC (rev 297245) @@ -78,7 +78,8 @@ #define FILTER_SANITIZE_NUMBER_INT 0x0207 #define FILTER_SANITIZE_NUMBER_FLOAT 0x0208 #define FILTER_SANITIZE_MAGIC_QUOTES 0x0209 -#define FILTER_SANITIZE_LAST 0x0209 +#define FILTER_SANITIZE_FULL_SPECIAL_CHARS 0x020a +#define FILTER_SANITIZE_LAST 0x020a #define FILTER_SANITIZE_ALL 0x0200 Modified: php/php-src/branches/PHP_5_3/ext/filter/php_filter.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/filter/php_filter.h 2010-03-31 22:49:08 UTC (rev 297244) +++ php/php-src/branches/PHP_5_3/ext/filter/php_filter.h 2010-03-31 22:59:09 UTC (rev 297245) @@ -28,6 +28,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "ext/standard/php_string.h" +#include "ext/standard/html.h" #include "php_variables.h" extern zend_module_entry filter_module_entry; @@ -81,6 +82,7 @@ void php_filter_string(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_encoded(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_special_chars(PHP_INPUT_FILTER_PARAM_DECL); +void php_filter_full_special_chars(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_unsafe_raw(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_email(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_url(PHP_INPUT_FILTER_PARAM_DECL); Modified: php/php-src/branches/PHP_5_3/ext/filter/sanitizing_filters.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/filter/sanitizing_filters.c 2010-03-31 22:49:08 UTC (rev 297244) +++ php/php-src/branches/PHP_5_3/ext/filter/sanitizing_filters.c 2010-03-31 22:59:09 UTC (rev 297245) @@ -242,6 +242,24 @@ } /* }}} */ +/* {{{ php_filter_full_special_chars */ +void php_filter_full_special_chars(PHP_INPUT_FILTER_PARAM_DECL) +{ + char *buf; + int len, quotes; + + if (!(flags & FILTER_FLAG_NO_ENCODE_QUOTES)) { + quotes = ENT_QUOTES; + } else { + quotes = ENT_NOQUOTES; + } + buf = php_escape_html_entities_ex(Z_STRVAL_P(value), Z_STRLEN_P(value), &len, 1, quotes, SG(default_charset), 0 TSRMLS_CC); + efree(Z_STRVAL_P(value)); + Z_STRVAL_P(value) = buf; + Z_STRLEN_P(value) = len; +} +/* }}} */ + /* {{{ php_filter_unsafe_raw */ void php_filter_unsafe_raw(PHP_INPUT_FILTER_PARAM_DECL) { @@ -266,6 +284,8 @@ } /* }}} */ + + /* {{{ php_filter_email */ #define SAFE "$-_.+" #define EXTRA "!*'(),"
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php