Bug#787513: perl: small failure in RFC2047 eMail header encoding
Thorsten Glaser
tg at mirbsd.de
Tue Jun 2 12:04:57 UTC 2015
Package: perl
Version: 5.20.2-6
Severity: normal
Consider this:
tglase at tglase:~ $ cat x.sh
printf '%s' "[service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit unterschiedlichen" | \
perl -C7 -0777 -Mutf8 -MEncode -e "print encode('MIME-Q', 'Subject: ' . <>);"
echo
tglase at tglase:~ $ sh x.sh
Subject: [service-Aufgaben S&W-Team][#19415] VM''
s aufsetzen mit unterschiedlichen
tglase at tglase:~ $ cat x.php
<?php
$h = "Subject: p\xf6stal foo bar baz foo bar baz foo bar baz foo bar baz";
echo mb_encode_mimeheader($h, "ISO-8859-1", "Q", "\n") . "\n";
$h = "Subject: [service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit unterschiedlichen";
echo mb_encode_mimeheader($h, "UTF-8", "Q", "\n") . "\n";
tglase at tglase:~ $ php x.php
Subject: =?ISO-8859-1?Q?p=3Fstal=20foo=20bar=20baz=20foo=20bar=20baz=20fo?=
=?ISO-8859-1?Q?o=20bar=20baz=20foo=20bar=20baz?=
Subject: [service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit
unterschiedlichen
See how Perl 5.20 inserts a space between “''” and “s” as per
RFC2047 rules: any whitespace between two encoded-words (that’s
these “=?charset?Q?body?=” thingies) is discarded, but any other
whitespace is kept; the newline between “VM''” and “s” is taken
by an MUA as space – instead, it should either encode like PHP
does (embarassingly enough, PHP is the only tested language to
pass all my RFC2047 tests!), or put both into encoded-words,
like: “Subject: [service-Aufgaben S&W-Team][#19415] =?UTF-8?Q?VM''?=
=?UTF-8?Q?s?= aufsetzen mit unterschiedlichen”.
MUA test:
| Subject: [service-Aufgaben S&W-Team][#19415] VM''
| s aufsetzen mit unterschiedlichen
(Perl) is shown as
| Subject: [service-Aufgaben S&W-Team][#19415] VM'' s aufsetzen mit unterschiedlichen
| Subject: [service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit
| unterschiedlichen
(PHP) is shown as
| Subject: [service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit unterschiedlichen
| Subject: [service-Aufgaben S&W-Team][#19415] =?UTF-8?Q?VM''?=
| =?UTF-8?Q?s?= aufsetzen mit unterschiedlichen
(my alternative suggestion) is shown as
| Subject: [service-Aufgaben S&W-Team][#19415] VM''s aufsetzen mit unterschiedlichen
The good thing about Perl is that, in contrast to Python, it at
least gets the line widths right.
Related bugs in: libpython2.7-stdlib, libpython3.4-stdlib
-- System Information:
Debian Release: stretch/sid
APT prefers unreleased
APT policy: (500, 'unreleased'), (500, 'buildd-unstable'), (500, 'unstable')
Architecture: x32 (x86_64)
Foreign Architectures: i386, amd64
Kernel: Linux 4.0.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/lksh
Init: sysvinit (via /sbin/init)
Versions of packages perl depends on:
ii dpkg 1.18.1
ii libbz2-1.0 1.0.6-8
ii libc6 2.19-18
ii libdb5.3 5.3.28-9
ii libgdbm3 1.8.3-13.1
ii perl-base 5.20.2-6
ii perl-modules 5.20.2-6
ii zlib1g 1:1.2.8.dfsg-2+b1
Versions of packages perl recommends:
ii netbase 5.3
pn rename <none>
Versions of packages perl suggests:
ii libterm-readline-gnu-perl 1.24-2+b1
ii make 4.0-8.1
ii perl-doc 5.20.2-6
-- no debconf information
More information about the Perl-maintainers
mailing list