andrei Wed Aug 9 17:40:22 2006 UTC
Modified files:
/php-src unicode-progress.txt
/php-src/ext/standard string.c
Log:
addcslashes() and stripcslashes() should work only on binary strings.
http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?r1=1.38&r2=1.39&diff_format=u
Index: php-src/unicode-progress.txt
diff -u php-src/unicode-progress.txt:1.38 php-src/unicode-progress.txt:1.39
--- php-src/unicode-progress.txt:1.38 Tue Aug 8 21:03:11 2006
+++ php-src/unicode-progress.txt Wed Aug 9 17:40:21 2006
@@ -16,9 +16,6 @@
string.c
--------
- addcslashes()
- Params API. Figure out how to escape characters > 255.
-
chunk_split()
Params API, Unicode upgrades. Split on codepoint level.
@@ -70,9 +67,6 @@
strcoll()
Params API, upgrade to use Collator if TT == IS_UNICODE, test
- stripcslashes()
- Params API. Depends on how addcslashes() is implemented.
-
stristr()
This is the problematic one. There are a few approaches:
@@ -186,6 +180,7 @@
string.c
--------
+ addcslashes()
addslashes()
basename()
bin2hex()
@@ -203,6 +198,7 @@
str_repeat()
strcspn()
strip_tags()
+ stripcslashes()
stripslashes()
strpbrk()
strpos()
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.568&r2=1.569&diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.568 php-src/ext/standard/string.c:1.569
--- php-src/ext/standard/string.c:1.568 Tue Aug 8 22:01:48 2006
+++ php-src/ext/standard/string.c Wed Aug 9 17:40:21 2006
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.568 2006/08/08 22:01:48 tony2001 Exp $ */
+/* $Id: string.c,v 1.569 2006/08/09 17:40:21 andrei Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -4360,31 +4360,28 @@
}
/* }}} */
-/* {{{ proto string addcslashes(string str, string charlist)
+/* {{{ proto binary addcslashes(binary str, binary charlist) U
Escapes all chars mentioned in charlist with backslash. It creates octal
representations if asked to backslash characters with 8th bit set or with
ASCII<32 (except '\n', '\r', '\t' etc...) */
PHP_FUNCTION(addcslashes)
{
- zval **str, **what;
+ char *str, *what;
+ int str_len, what_len;
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &str, &what) ==
FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_DC, "SS", &str,
&str_len,
+ &what, &what_len) ==
FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- convert_to_string_ex(what);
- if (Z_STRLEN_PP(str) == 0) {
+ if (str_len == 0) {
RETURN_EMPTY_STRING();
}
- if (Z_STRLEN_PP(what) == 0) {
- RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ if (what_len == 0) {
+ RETURN_STRINGL(str, str_len, 1);
}
- RETURN_STRING(php_addcslashes(Z_STRVAL_PP(str),
- Z_STRLEN_PP(str),
- &Z_STRLEN_P(return_value), 0,
- Z_STRVAL_PP(what),
- Z_STRLEN_PP(what) TSRMLS_CC), 0);
+ RETURN_STRING(php_addcslashes(str, str_len, &Z_STRLEN_P(return_value),
0,
+ what,
what_len TSRMLS_CC), 0);
}
/* }}} */
@@ -4419,18 +4416,18 @@
}
/* }}} */
-/* {{{ proto string stripcslashes(string str)
+/* {{{ proto binary stripcslashes(binary str) U
Strips backslashes from a string. Uses C-style conventions */
PHP_FUNCTION(stripcslashes)
{
- zval **str;
+ char *str;
+ int str_len;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE)
{
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_DC, "S", &str,
&str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ ZVAL_STRINGL(return_value, str, str_len, 1);
php_stripcslashes(Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value));
}
/* }}} */
@@ -5362,7 +5359,6 @@
}
/* }}} */
-
/* {{{ proto string nl2br(string str) U
Converts newlines to HTML line breaks */
PHP_FUNCTION(nl2br)
@@ -5487,7 +5483,6 @@
}
/* }}} */
-
/* {{{ proto string strip_tags(string str [, string allowable_tags]) U
Strips HTML and PHP tags from a string */
PHP_FUNCTION(strip_tags)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php