cvs: php-src(PHP_5_0) /ext/mbstring/libmbfl/mbfl mbfilter.c
| From: | Moriyoshi Koizumi | Date: | Wed, 23 Mar 2005 23:22:55 +0000 |
| Subject: | cvs: php-src(PHP_5_0) /ext/mbstring/libmbfl/mbfl mbfilter.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-31094@lists.php.net to get a copy of this message | ||
moriyoshi Wed Mar 23 18:22:55 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src/ext/mbstring/libmbfl/mbfl mbfilter.c
Log:
- MFH: fix bug #32311 (mb_encode_mimeheader() does not properly escape
characters).
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.2.2.3&r2=1.2.2.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.3
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.4
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2.2.3 Wed Feb 23 08:35:57 2005
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c Wed Mar 23 18:22:55 2005
@@ -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 */