moriyoshi               Wed Apr 13 06:10:55 2005 EDT

  Modified files:              (Branch: PHP_5_0)
    /php-src    NEWS 
    /php-src/ext/mbstring/libmbfl/mbfl  mbfilter.c 
  Log:
  - Commit the pending patch (bug #32311).
  # Ugh, it wasn't committed yet.
  
  
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.320&r2=1.1760.2.321&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.320 php-src/NEWS:1.1760.2.321
--- php-src/NEWS:1.1760.2.320   Tue Apr 12 10:01:01 2005
+++ php-src/NEWS        Wed Apr 13 06:10:50 2005
@@ -37,6 +37,7 @@
   to 3.7.0. (Moriyoshi)
 - Updated bundled libmbfl library (used for multibyte functions). (Moriyoshi)
   Fixed bugs:
+  . Bug #32311 (mb_encode_mimeheader() does not properly escape characters)
   . Bug #32063 (mb_convert_encoding ignores named entity 'alpha')
   . Bug #31911 (mb_decode_mimeheader() is case-sensitive to hex escapes)
   . bug #30573 (compiler warnings in libmbfl due to invalid type cast)
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.2.2.5&r2=1.2.2.6&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.5 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.6
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.5        Wed Mar 23 
18:56:38 2005
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c        Wed Apr 13 06:10:54 2005
@@ -571,7 +571,7 @@
        /* judge */
        encoding = NULL;
 
-       for (i = 0; i < num; i++) {
+       for (i = num; --i >= 0;) {
                filter = &flist[i];
                if (!filter->flag) {
                        encoding = filter->encoding;
@@ -1960,6 +1960,25 @@
 static int
 mime_header_encoder_collector(int c, void *data)
 {
+       static int qp_table[256] = {
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 */
+               1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x20 */
+               0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 1, 0, 1, /* 0x10 */
+               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x40 */
+               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x50 */
+               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 */
+               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x70 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x80 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x90 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xA0 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xB0 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xC0 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xD0 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xE0 */
+               1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  /* 0xF0 */
+       };
+
        int n;
        struct mime_header_encoder_data *pe = (struct mime_header_encoder_data 
*)data;
 
@@ -1969,7 +1988,7 @@
                break;
 
        default:        /* ASCII */
-               if (c >= 0x21 && c < 0x7f) {    /* ASCII exclude SPACE and CTLs 
*/
+               if (!qp_table[(c & 0xff)]) { /* ordinary characters */
                        mbfl_memory_device_output(c, &pe->tmpdev);
                        pe->status1 = 1;
                } else if (pe->status1 == 0 && c == 0x20) {     /* repeat SPACE 
*/

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

Reply via email to