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