[PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c

2006-04-03 Thread Seiji Masugata
masugataMon Apr  3 13:04:13 2006 UTC

  Modified files:  (Branch: PHP_4_4)
/php-src/ext/mbstring   mbstring.c mbstring.h 
/php-src/ext/mbstring/libmbfl/mbfl  mbfilter.c 
  Log:
  added mb_check_encoding( ). detect possible invalid encoding attack(avoids a 
security issue).
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.16r2=1.142.2.47.2.17diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.16 
php-src/ext/mbstring/mbstring.c:1.142.2.47.2.17
--- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.16 Thu Mar 23 02:17:42 2006
+++ php-src/ext/mbstring/mbstring.c Mon Apr  3 13:04:13 2006
@@ -17,7 +17,7 @@
+--+
  */
 
-/* $Id: mbstring.c,v 1.142.2.47.2.16 2006/03/23 02:17:42 masugata Exp $ */
+/* $Id: mbstring.c,v 1.142.2.47.2.17 2006/04/03 13:04:13 masugata Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring
@@ -253,6 +253,7 @@
PHP_FE(mb_decode_numericentity, NULL)
PHP_FE(mb_send_mail,NULL)
PHP_FE(mb_get_info, NULL)
+   PHP_FE(mb_check_encoding,   NULL)
PHP_FALIAS(mbstrlen,mb_strlen,  NULL)
PHP_FALIAS(mbstrpos,mb_strpos,  NULL)
PHP_FALIAS(mbstrrpos,   mb_strrpos, NULL)
@@ -3812,6 +3813,65 @@
 }
 /* }}} */
 
+/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
+   Check if the string is valid for the specified encoding */
+PHP_FUNCTION(mb_check_encoding)
+{
+   char *var = NULL;
+   int var_len;
+   char *enc = NULL;
+   int enc_len;
+   mbfl_buffer_converter *convd;
+   enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
+   mbfl_string string, result, *ret = NULL;
+   long illegalchars = 0;
+
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |ss, var, 
var_len, enc, enc_len) == FAILURE) {
+   RETURN_FALSE;
+   }
+
+   if (var == NULL) {
+   RETURN_BOOL(MBSTRG(illegalchars) == 0);
+   }
+
+   if (enc != NULL) {
+   no_encoding = mbfl_name2no_encoding(enc);
+   if (no_encoding == mbfl_no_encoding_invalid || no_encoding == 
mbfl_no_encoding_pass) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid 
encoding \%s\, enc);
+   RETURN_FALSE;
+   }
+   }
+   
+   convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
+   if (convd == NULL) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to create 
converter);
+   RETURN_FALSE;
+   }   
+   mbfl_buffer_converter_illegal_mode(convd, 
MBSTRG(current_filter_illegal_mode));
+   mbfl_buffer_converter_illegal_substchar(convd, 
MBSTRG(current_filter_illegal_substchar));   
+   
+   /* initialize string */
+   mbfl_string_init(string);
+   mbfl_string_init(result);
+   string.no_encoding = no_encoding;
+   string.no_language = MBSTRG(current_language);
+
+   string.val = (unsigned char *)var;
+   string.len = var_len;
+   ret = mbfl_buffer_converter_feed_result(convd, string, result);
+   illegalchars = mbfl_buffer_illegalchars(convd);
+   mbfl_buffer_converter_delete(convd);
+
+   if (ret != NULL) {
+   MBSTRG(illegalchars) += illegalchars;
+   efree(ret-val);
+   RETURN_BOOL(illegalchars == 0);
+   } else {
+   RETURN_FALSE;
+   }
+}
+/* }}} */
+
 /* {{{ MBSTRING_API int php_mb_encoding_translation() */
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D) 
 {
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.4r2=1.40.2.12.4.5diff_format=u
Index: php-src/ext/mbstring/mbstring.h
diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.4 
php-src/ext/mbstring/mbstring.h:1.40.2.12.4.5
--- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.4   Thu Mar 23 02:17:42 2006
+++ php-src/ext/mbstring/mbstring.h Mon Apr  3 13:04:13 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: mbstring.h,v 1.40.2.12.4.4 2006/03/23 02:17:42 masugata Exp $ */
+/* $Id: mbstring.h,v 1.40.2.12.4.5 2006/04/03 13:04:13 masugata Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring (currently only for Japanese)
@@ -117,6 +117,7 @@
 PHP_FUNCTION(mb_decode_numericentity);
 PHP_FUNCTION(mb_send_mail);
 PHP_FUNCTION(mb_get_info);
+PHP_FUNCTION(mb_check_encoding);
 
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D);
 
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.1.2.7.2.5r2=1.1.2.7.2.6diff_format=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1.2.7.2.5 

Re: [PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c

2006-04-03 Thread Seiji Masugata
Derick,

Seiji Masugata wrote:

 masugata  Mon Apr  3 13:04:13 2006 UTC
 
   Modified files:  (Branch: PHP_4_4)
 /php-src/ext/mbstring mbstring.c mbstring.h 
 /php-src/ext/mbstring/libmbfl/mbflmbfilter.c 
   Log:
   added mb_check_encoding( ). detect possible invalid encoding attack(avoids 
 a security issue).

There was a contact from Rui.
Make apply this function to the PHP4_4 Branch.

http://news.php.net/php.cvs/37387
http://news.php.net/php.cvs/37437

This function is necessary to detect possible invalid 
encoding attack(avoids a security issue).

There was no reply afterwards though it reported directly 
from Rui to Derick. 

Therefore, Rui thinks can apply to PHP4_4 Branch.

I reverted without knowing this thing. 


Compatibility is secured.
Therefore, there is not an influence.


Thank you.

--
Seiji Masugata


   
 http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.16r2=1.142.2.47.2.17diff_format=u
 Index: php-src/ext/mbstring/mbstring.c
 diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.16 
 php-src/ext/mbstring/mbstring.c:1.142.2.47.2.17
 --- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.16   Thu Mar 23 02:17:42 2006
 +++ php-src/ext/mbstring/mbstring.c   Mon Apr  3 13:04:13 2006
 @@ -17,7 +17,7 @@
 +--+
   */
  
 -/* $Id: mbstring.c,v 1.142.2.47.2.16 2006/03/23 02:17:42 masugata Exp $ */
 +/* $Id: mbstring.c,v 1.142.2.47.2.17 2006/04/03 13:04:13 masugata Exp $ */
  
  /*
   * PHP4 Multibyte String module mbstring
 @@ -253,6 +253,7 @@
   PHP_FE(mb_decode_numericentity, NULL)
   PHP_FE(mb_send_mail,NULL)
   PHP_FE(mb_get_info, NULL)
 + PHP_FE(mb_check_encoding,   NULL)
   PHP_FALIAS(mbstrlen,mb_strlen,  NULL)
   PHP_FALIAS(mbstrpos,mb_strpos,  NULL)
   PHP_FALIAS(mbstrrpos,   mb_strrpos, NULL)
 @@ -3812,6 +3813,65 @@
  }
  /* }}} */
  
 +/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
 +   Check if the string is valid for the specified encoding */
 +PHP_FUNCTION(mb_check_encoding)
 +{
 + char *var = NULL;
 + int var_len;
 + char *enc = NULL;
 + int enc_len;
 + mbfl_buffer_converter *convd;
 + enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
 + mbfl_string string, result, *ret = NULL;
 + long illegalchars = 0;
 +
 + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |ss, var, 
 var_len, enc, enc_len) == FAILURE) {
 + RETURN_FALSE;
 + }
 +
 + if (var == NULL) {
 + RETURN_BOOL(MBSTRG(illegalchars) == 0);
 + }
 +
 + if (enc != NULL) {
 + no_encoding = mbfl_name2no_encoding(enc);
 + if (no_encoding == mbfl_no_encoding_invalid || no_encoding == 
 mbfl_no_encoding_pass) {
 + php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid 
 encoding \%s\, enc);
 + RETURN_FALSE;
 + }
 + }
 + 
 + convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
 + if (convd == NULL) {
 + php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to create 
 converter);
 + RETURN_FALSE;
 + }   
 + mbfl_buffer_converter_illegal_mode(convd, 
 MBSTRG(current_filter_illegal_mode));
 + mbfl_buffer_converter_illegal_substchar(convd, 
 MBSTRG(current_filter_illegal_substchar));   
 + 
 + /* initialize string */
 + mbfl_string_init(string);
 + mbfl_string_init(result);
 + string.no_encoding = no_encoding;
 + string.no_language = MBSTRG(current_language);
 +
 + string.val = (unsigned char *)var;
 + string.len = var_len;
 + ret = mbfl_buffer_converter_feed_result(convd, string, result);
 + illegalchars = mbfl_buffer_illegalchars(convd);
 + mbfl_buffer_converter_delete(convd);
 +
 + if (ret != NULL) {
 + MBSTRG(illegalchars) += illegalchars;
 + efree(ret-val);
 + RETURN_BOOL(illegalchars == 0);
 + } else {
 + RETURN_FALSE;
 + }
 +}
 +/* }}} */
 +
  /* {{{ MBSTRING_API int php_mb_encoding_translation() */
  MBSTRING_API int php_mb_encoding_translation(TSRMLS_D) 
  {
 http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.4r2=1.40.2.12.4.5diff_format=u
 Index: php-src/ext/mbstring/mbstring.h
 diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.4 
 php-src/ext/mbstring/mbstring.h:1.40.2.12.4.5
 --- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.4 Thu Mar 23 02:17:42 2006
 +++ php-src/ext/mbstring/mbstring.h   Mon Apr  3 13:04:13 2006
 @@ -16,7 +16,7 @@
 +--+
   */
  
 -/* $Id: mbstring.h,v 1.40.2.12.4.4 2006/03/23 02:17:42 masugata Exp $ */
 +/* $Id: mbstring.h,v 1.40.2.12.4.5 2006/04/03 13:04:13 masugata Exp $ */

[PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c

2006-03-22 Thread Seiji Masugata
masugataThu Mar 23 02:17:43 2006 UTC

  Modified files:  (Branch: PHP_4_4)
/php-src/ext/mbstring   mbstring.c mbstring.h 
/php-src/ext/mbstring/libmbfl/mbfl  mbfilter.c 
  Log:
  revert.(See http://news.php.net/php.cvs/37387)
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.15r2=1.142.2.47.2.16diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.15 
php-src/ext/mbstring/mbstring.c:1.142.2.47.2.16
--- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.15 Tue Mar 21 08:00:55 2006
+++ php-src/ext/mbstring/mbstring.c Thu Mar 23 02:17:42 2006
@@ -17,7 +17,7 @@
+--+
  */
 
-/* $Id: mbstring.c,v 1.142.2.47.2.15 2006/03/21 08:00:55 hirokawa Exp $ */
+/* $Id: mbstring.c,v 1.142.2.47.2.16 2006/03/23 02:17:42 masugata Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring
@@ -253,7 +253,6 @@
PHP_FE(mb_decode_numericentity, NULL)
PHP_FE(mb_send_mail,NULL)
PHP_FE(mb_get_info, NULL)
-   PHP_FE(mb_check_encoding,   NULL)
PHP_FALIAS(mbstrlen,mb_strlen,  NULL)
PHP_FALIAS(mbstrpos,mb_strpos,  NULL)
PHP_FALIAS(mbstrrpos,   mb_strrpos, NULL)
@@ -3813,67 +3812,6 @@
 }
 /* }}} */
 
-/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
-   Check if the string is valid for the specified encoding */
-PHP_FUNCTION(mb_check_encoding)
-{
-   char *var = NULL;
-   int var_len;
-   char *enc = NULL;
-   int enc_len;
-   char *name;
-   mbfl_buffer_converter *convd;
-   enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
-   zval *row;
-   mbfl_string string, result, *ret = NULL;
-   long illegalchars = 0;
-
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |ss, var, 
var_len, enc, enc_len) == FAILURE) {
-   RETURN_FALSE;
-   }
-
-   if (var == NULL) {
-   RETURN_BOOL(MBSTRG(illegalchars) == 0);
-   }
-
-   if (enc != NULL) {
-   no_encoding = mbfl_name2no_encoding(enc);
-   if (no_encoding == mbfl_no_encoding_invalid || no_encoding == 
mbfl_no_encoding_pass) {
-   php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid 
encoding \%s\, enc);
-   RETURN_FALSE;
-   }
-   }
-   
-   convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
-   if (convd == NULL) {
-   php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to create 
converter);
-   RETURN_FALSE;
-   }   
-   mbfl_buffer_converter_illegal_mode(convd, 
MBSTRG(current_filter_illegal_mode));
-   mbfl_buffer_converter_illegal_substchar(convd, 
MBSTRG(current_filter_illegal_substchar));   
-   
-   /* initialize string */
-   mbfl_string_init(string);
-   mbfl_string_init(result);
-   string.no_encoding = no_encoding;
-   string.no_language = MBSTRG(current_language);
-
-   string.val = (unsigned char *)var;
-   string.len = var_len;
-   ret = mbfl_buffer_converter_feed_result(convd, string, result);
-   illegalchars = mbfl_buffer_illegalchars(convd);
-   mbfl_buffer_converter_delete(convd);
-
-   if (ret != NULL) {
-   MBSTRG(illegalchars) += illegalchars;
-   efree(ret-val);
-   RETURN_BOOL(illegalchars == 0);
-   } else {
-   RETURN_FALSE;
-   }
-}
-/* }}} */
-
 /* {{{ MBSTRING_API int php_mb_encoding_translation() */
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D) 
 {
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.3r2=1.40.2.12.4.4diff_format=u
Index: php-src/ext/mbstring/mbstring.h
diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.3 
php-src/ext/mbstring/mbstring.h:1.40.2.12.4.4
--- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.3   Tue Mar 21 08:00:55 2006
+++ php-src/ext/mbstring/mbstring.h Thu Mar 23 02:17:42 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: mbstring.h,v 1.40.2.12.4.3 2006/03/21 08:00:55 hirokawa Exp $ */
+/* $Id: mbstring.h,v 1.40.2.12.4.4 2006/03/23 02:17:42 masugata Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring (currently only for Japanese)
@@ -117,7 +117,6 @@
 PHP_FUNCTION(mb_decode_numericentity);
 PHP_FUNCTION(mb_send_mail);
 PHP_FUNCTION(mb_get_info);
-PHP_FUNCTION(mb_check_encoding);
 
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D);
 
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.1.2.7.2.4r2=1.1.2.7.2.5diff_format=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1.2.7.2.4 

[PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c

2006-03-21 Thread Rui Hirokawa
hirokawaTue Mar 21 08:00:55 2006 UTC

  Modified files:  (Branch: PHP_4_4)
/php-src/ext/mbstring   mbstring.c mbstring.h 
/php-src/ext/mbstring/libmbfl/mbfl  mbfilter.c 
  Log:
  MFH
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.14r2=1.142.2.47.2.15diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.14 
php-src/ext/mbstring/mbstring.c:1.142.2.47.2.15
--- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.14 Tue Mar 21 02:49:09 2006
+++ php-src/ext/mbstring/mbstring.c Tue Mar 21 08:00:55 2006
@@ -17,7 +17,7 @@
+--+
  */
 
-/* $Id: mbstring.c,v 1.142.2.47.2.14 2006/03/21 02:49:09 hirokawa Exp $ */
+/* $Id: mbstring.c,v 1.142.2.47.2.15 2006/03/21 08:00:55 hirokawa Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring
@@ -253,6 +253,7 @@
PHP_FE(mb_decode_numericentity, NULL)
PHP_FE(mb_send_mail,NULL)
PHP_FE(mb_get_info, NULL)
+   PHP_FE(mb_check_encoding,   NULL)
PHP_FALIAS(mbstrlen,mb_strlen,  NULL)
PHP_FALIAS(mbstrpos,mb_strpos,  NULL)
PHP_FALIAS(mbstrrpos,   mb_strrpos, NULL)
@@ -3812,6 +3813,67 @@
 }
 /* }}} */
 
+/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
+   Check if the string is valid for the specified encoding */
+PHP_FUNCTION(mb_check_encoding)
+{
+   char *var = NULL;
+   int var_len;
+   char *enc = NULL;
+   int enc_len;
+   char *name;
+   mbfl_buffer_converter *convd;
+   enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
+   zval *row;
+   mbfl_string string, result, *ret = NULL;
+   long illegalchars = 0;
+
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |ss, var, 
var_len, enc, enc_len) == FAILURE) {
+   RETURN_FALSE;
+   }
+
+   if (var == NULL) {
+   RETURN_BOOL(MBSTRG(illegalchars) == 0);
+   }
+
+   if (enc != NULL) {
+   no_encoding = mbfl_name2no_encoding(enc);
+   if (no_encoding == mbfl_no_encoding_invalid || no_encoding == 
mbfl_no_encoding_pass) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid 
encoding \%s\, enc);
+   RETURN_FALSE;
+   }
+   }
+   
+   convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
+   if (convd == NULL) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to create 
converter);
+   RETURN_FALSE;
+   }   
+   mbfl_buffer_converter_illegal_mode(convd, 
MBSTRG(current_filter_illegal_mode));
+   mbfl_buffer_converter_illegal_substchar(convd, 
MBSTRG(current_filter_illegal_substchar));   
+   
+   /* initialize string */
+   mbfl_string_init(string);
+   mbfl_string_init(result);
+   string.no_encoding = no_encoding;
+   string.no_language = MBSTRG(current_language);
+
+   string.val = (unsigned char *)var;
+   string.len = var_len;
+   ret = mbfl_buffer_converter_feed_result(convd, string, result);
+   illegalchars = mbfl_buffer_illegalchars(convd);
+   mbfl_buffer_converter_delete(convd);
+
+   if (ret != NULL) {
+   MBSTRG(illegalchars) += illegalchars;
+   efree(ret-val);
+   RETURN_BOOL(illegalchars == 0);
+   } else {
+   RETURN_FALSE;
+   }
+}
+/* }}} */
+
 /* {{{ MBSTRING_API int php_mb_encoding_translation() */
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D) 
 {
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.2r2=1.40.2.12.4.3diff_format=u
Index: php-src/ext/mbstring/mbstring.h
diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.2 
php-src/ext/mbstring/mbstring.h:1.40.2.12.4.3
--- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.2   Tue Mar 21 02:49:09 2006
+++ php-src/ext/mbstring/mbstring.h Tue Mar 21 08:00:55 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: mbstring.h,v 1.40.2.12.4.2 2006/03/21 02:49:09 hirokawa Exp $ */
+/* $Id: mbstring.h,v 1.40.2.12.4.3 2006/03/21 08:00:55 hirokawa Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring (currently only for Japanese)
@@ -117,6 +117,7 @@
 PHP_FUNCTION(mb_decode_numericentity);
 PHP_FUNCTION(mb_send_mail);
 PHP_FUNCTION(mb_get_info);
+PHP_FUNCTION(mb_check_encoding);
 
 MBSTRING_API int php_mb_encoding_translation(TSRMLS_D);
 
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.1.2.7.2.3r2=1.1.2.7.2.4diff_format=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1.2.7.2.3 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1.2.7.2.4
--- 

Re: [PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c

2006-03-21 Thread Derick Rethans
On Tue, 21 Mar 2006, Rui Hirokawa wrote:

 hirokawa  Tue Mar 21 08:00:55 2006 UTC
 
   Modified files:  (Branch: PHP_4_4)
 /php-src/ext/mbstring mbstring.c mbstring.h 
 /php-src/ext/mbstring/libmbfl/mbflmbfilter.c 
   Log:
   MFH

Please revert this. You can not add new functions to PHP 4.4.x.

regards,
Derick

   
 http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.14r2=1.142.2.47.2.15diff_format=u
 Index: php-src/ext/mbstring/mbstring.c
 diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.14 
 php-src/ext/mbstring/mbstring.c:1.142.2.47.2.15
 --- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.14   Tue Mar 21 02:49:09 2006
 +++ php-src/ext/mbstring/mbstring.c   Tue Mar 21 08:00:55 2006
 @@ -17,7 +17,7 @@
 +--+
   */
  
 -/* $Id: mbstring.c,v 1.142.2.47.2.14 2006/03/21 02:49:09 hirokawa Exp $ */
 +/* $Id: mbstring.c,v 1.142.2.47.2.15 2006/03/21 08:00:55 hirokawa Exp $ */
  
  /*
   * PHP4 Multibyte String module mbstring
 @@ -253,6 +253,7 @@
   PHP_FE(mb_decode_numericentity, NULL)
   PHP_FE(mb_send_mail,NULL)
   PHP_FE(mb_get_info, NULL)
 + PHP_FE(mb_check_encoding,   NULL)
   PHP_FALIAS(mbstrlen,mb_strlen,  NULL)
   PHP_FALIAS(mbstrpos,mb_strpos,  NULL)
   PHP_FALIAS(mbstrrpos,   mb_strrpos, NULL)
 @@ -3812,6 +3813,67 @@
  }
  /* }}} */
  
 +/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
 +   Check if the string is valid for the specified encoding */
 +PHP_FUNCTION(mb_check_encoding)
 +{
 + char *var = NULL;
 + int var_len;
 + char *enc = NULL;
 + int enc_len;
 + char *name;
 + mbfl_buffer_converter *convd;
 + enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
 + zval *row;
 + mbfl_string string, result, *ret = NULL;
 + long illegalchars = 0;
 +
 + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |ss, var, 
 var_len, enc, enc_len) == FAILURE) {
 + RETURN_FALSE;
 + }
 +
 + if (var == NULL) {
 + RETURN_BOOL(MBSTRG(illegalchars) == 0);
 + }
 +
 + if (enc != NULL) {
 + no_encoding = mbfl_name2no_encoding(enc);
 + if (no_encoding == mbfl_no_encoding_invalid || no_encoding == 
 mbfl_no_encoding_pass) {
 + php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid 
 encoding \%s\, enc);
 + RETURN_FALSE;
 + }
 + }
 + 
 + convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
 + if (convd == NULL) {
 + php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to create 
 converter);
 + RETURN_FALSE;
 + }   
 + mbfl_buffer_converter_illegal_mode(convd, 
 MBSTRG(current_filter_illegal_mode));
 + mbfl_buffer_converter_illegal_substchar(convd, 
 MBSTRG(current_filter_illegal_substchar));   
 + 
 + /* initialize string */
 + mbfl_string_init(string);
 + mbfl_string_init(result);
 + string.no_encoding = no_encoding;
 + string.no_language = MBSTRG(current_language);
 +
 + string.val = (unsigned char *)var;
 + string.len = var_len;
 + ret = mbfl_buffer_converter_feed_result(convd, string, result);
 + illegalchars = mbfl_buffer_illegalchars(convd);
 + mbfl_buffer_converter_delete(convd);
 +
 + if (ret != NULL) {
 + MBSTRG(illegalchars) += illegalchars;
 + efree(ret-val);
 + RETURN_BOOL(illegalchars == 0);
 + } else {
 + RETURN_FALSE;
 + }
 +}
 +/* }}} */
 +
  /* {{{ MBSTRING_API int php_mb_encoding_translation() */
  MBSTRING_API int php_mb_encoding_translation(TSRMLS_D) 
  {
 http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.2r2=1.40.2.12.4.3diff_format=u
 Index: php-src/ext/mbstring/mbstring.h
 diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.2 
 php-src/ext/mbstring/mbstring.h:1.40.2.12.4.3
 --- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.2 Tue Mar 21 02:49:09 2006
 +++ php-src/ext/mbstring/mbstring.h   Tue Mar 21 08:00:55 2006
 @@ -16,7 +16,7 @@
 +--+
   */
  
 -/* $Id: mbstring.h,v 1.40.2.12.4.2 2006/03/21 02:49:09 hirokawa Exp $ */
 +/* $Id: mbstring.h,v 1.40.2.12.4.3 2006/03/21 08:00:55 hirokawa Exp $ */
  
  /*
   * PHP4 Multibyte String module mbstring (currently only for Japanese)
 @@ -117,6 +117,7 @@
  PHP_FUNCTION(mb_decode_numericentity);
  PHP_FUNCTION(mb_send_mail);
  PHP_FUNCTION(mb_get_info);
 +PHP_FUNCTION(mb_check_encoding);
  
  MBSTRING_API int php_mb_encoding_translation(TSRMLS_D);
  
 http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.1.2.7.2.3r2=1.1.2.7.2.4diff_format=u
 Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
 diff 

[PHP-CVS] cvs: php-src(PHP_4_4) /ext/mbstring mbstring.c mbstring.h /ext/mbstring/libmbfl/mbfl mbfilter.c mbfilter.h mbfl_convert.c mbfl_convert.h

2006-03-20 Thread Rui Hirokawa
hirokawaTue Mar 21 02:49:09 2006 UTC

  Modified files:  (Branch: PHP_4_4)
/php-src/ext/mbstring   mbstring.c mbstring.h 
/php-src/ext/mbstring/libmbfl/mbfl  mbfilter.c mbfilter.h 
mbfl_convert.c mbfl_convert.h 
  Log:
  MFH.
  http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.142.2.47.2.13r2=1.142.2.47.2.14diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.142.2.47.2.13 
php-src/ext/mbstring/mbstring.c:1.142.2.47.2.14
--- php-src/ext/mbstring/mbstring.c:1.142.2.47.2.13 Sat Mar 18 05:52:33 2006
+++ php-src/ext/mbstring/mbstring.c Tue Mar 21 02:49:09 2006
@@ -17,7 +17,7 @@
+--+
  */
 
-/* $Id: mbstring.c,v 1.142.2.47.2.13 2006/03/18 05:52:33 masugata Exp $ */
+/* $Id: mbstring.c,v 1.142.2.47.2.14 2006/03/21 02:49:09 hirokawa Exp $ */
 
 /*
  * PHP4 Multibyte String module mbstring
@@ -854,6 +854,7 @@
MBSTRG(filter_illegal_substchar) = 0x3f;/* '?' */
MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
MBSTRG(current_filter_illegal_substchar) = 0x3f;/* '?' */
+   MBSTRG(illegalchars) = 0;
MBSTRG(func_overload) = 0;
MBSTRG(encoding_translation) = 0;
pglobals-outconv = NULL;
@@ -1011,6 +1012,7 @@
MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);
MBSTRG(current_filter_illegal_mode) = MBSTRG(filter_illegal_mode);
MBSTRG(current_filter_illegal_substchar) = 
MBSTRG(filter_illegal_substchar);
+   MBSTRG(illegalchars) = 0;
 
n = 0;
if (MBSTRG(detect_order_list)) {
@@ -1078,6 +1080,7 @@
MBSTRG(current_detect_order_list_size) = 0;
}
if (MBSTRG(outconv) != NULL) {
+   MBSTRG(illegalchars) += 
mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -1627,6 +1630,7 @@
}
 
if (convd != NULL) {
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
if (val_list != NULL) {
@@ -1978,6 +1982,7 @@
PG(register_globals) = old_rg;
 
if (convd != NULL) {
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
efree((void *)str_list);
@@ -2015,6 +2020,7 @@
if ((arg_status  PHP_OUTPUT_HANDLER_START) != 0) {
/* delete the converter just in case. */
if (MBSTRG(outconv)) {
+   MBSTRG(illegalchars) += 
mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -2079,6 +2085,7 @@
  
/* delete the converter if it is the last feed. */
if (last_feed) {
+   MBSTRG(illegalchars) += 
mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -2711,6 +2718,7 @@
output = (char *)ret-val;
}
 
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
return output;
 }
@@ -3376,6 +3384,7 @@
}
efree(stack);
}
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
 
@@ -3795,6 +3804,8 @@
if (lang != NULL  (name = (char 
*)mbfl_no_encoding2name(lang-mail_body_encoding)) != NULL) {
RETVAL_STRING(name, 1);
}
+   } else if (!strcasecmp(illegal_chars, typ)) {
+   RETVAL_LONG(MBSTRG(illegalchars));
} else {
RETURN_FALSE;
}
@@ -3961,6 +3972,7 @@
str[i] = ret-val;
len[i] = ret-len;
}
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
return ret ? 0 : -1;
@@ -4184,6 +4196,7 @@
*to = ret-val;
*to_length = ret-len;
}
+   MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
 
return ret ? 0 : -1;
http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.40.2.12.4.1r2=1.40.2.12.4.2diff_format=u
Index: php-src/ext/mbstring/mbstring.h
diff -u php-src/ext/mbstring/mbstring.h:1.40.2.12.4.1 
php-src/ext/mbstring/mbstring.h:1.40.2.12.4.2
--- php-src/ext/mbstring/mbstring.h:1.40.2.12.4.1   Sun Jan  1 13:46:54 2006
+++ php-src/ext/mbstring/mbstring.h