Bug #49272 [Opn->Csd]: Incorrect encoding in structured header field bodies
| From: | yohgaki@php.net | Date: | Tue, 15 Jul 2014 11:17:16 +0000 |
| Subject: | Bug #49272 [Opn->Csd]: Incorrect encoding in structured header field bodies | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-186621@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=49272&edit=1
ID: 49272
Updated by: yohgaki@php.net
Reported by: u235e at hotmail dot com
Summary: Incorrect encoding in structured header field bodies
-Status: Open
+Status: Closed
Type: Bug
Package: mbstring related
Operating System: *
PHP Version: 5.2.10
-Assigned To:
+Assigned To: yohgaki
Block user comment: N
Private report: N
New Comment:
Cannot see the report text. Probably due to malformed encoding data. Please report new bug, if you
have issue still.
Previous Comments:
------------------------------------------------------------------------
[2010-02-22 06:39:51] moriyoshi@php.net
mb_encode_mimeheader() is supposed to be used to encode such words or the header itself that is
known to contain only words, not to encode the entire header. You need to parse it manually
beforehand.
------------------------------------------------------------------------
[2009-08-16 08:53:17] u235e at hotmail dot com
Oh, and the display-name in the example is technically not valid because of the non ASCII char of
course - but that's the point of this function, right? ;-)
------------------------------------------------------------------------
[2009-08-16 08:45:43] u235e at hotmail dot com
Disregard the parts about stripping quotes.
------------------------------------------------------------------------
[2009-08-16 08:36:56] u235e at hotmail dot com
Description:
------------
Function: mb_encode_mimeheader
When trying to construct a structured header field like From or To, only _words_ within phrases or
ctext in comments may be encoded, especially not within "quoted strings" as of RFC 2047
section 5.
This function does not take that into account, even worse it may make the field invalid as it
greedily encodes everything after the first encountered WSP delimited text with non ASCII
characters.
This function is only useful for unstructured header fields as it is and thus only for the subject
field in most common cases.
Judging from the manual and the given example, I take it that this is not the only intended use.
The example below would also apply to (comments) not just "quoted strings". Technically
the quotes should probably not be part of the encoded word ("lexically invisible") where
as the () in comments must stay in place to still recognize the text as a comment.
And as a side note: I dont understand why digits are encoded and spaces not as underscores in
"Q" scheme - renders the point of this scheme useless?
Reproduce code:
---------------
<?php
mb_internal_encoding('ISO-8859-1');
$name = "Peter \"Der M\xFCller\""; // German - Peter <">Der
Müller<">
// valid RFC 2822 display-name
$mbox = "peter.mueller";
$doma = "example.com";
$addr = mb_encode_mimeheader($name, "ISO-8859-1", "Q") . " <" .
$mbox . "@" . $doma . ">";
echo $addr;
?>
Expected result:
----------------
should be:
Peter =?ISO-8859-1?Q?=22Der=20M=FCller=22?= <peter.mueller@example.com>
or very greedy:
=?ISO-8859-1?Q?Peter=20=22Der=20M=FCller=22?= <peter.mueller@example.com>
or maybe even with the quotes stripped:
Peter =?ISO-8859-1?Q?Der=20M=FCller?= <peter.mueller@example.com>
Actual result:
--------------
Peter "Der =?ISO-8859-1?Q?M=FCller=22?= <peter.mueller@example.com>
Which is not a valid RFC 2822 name-addr (display-name) any more!
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=49272&edit=1