php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #27966 double periods with quoted_printable_decode
Submitted: 2004-04-12 16:04 UTC Modified: 2004-09-17 16:24 UTC
From: br at creativedigitalcolor dot com Assigned:
Status: Closed Package: Documentation problem
PHP Version: 4.3.4 OS: redhat 9
Private report: No CVE-ID: None
 [2004-04-12 16:04 UTC] br at creativedigitalcolor dot com
Description:
------------
quoted_printable_decode() does not handle lines starting 
with "..". 

smtp appends a period to the beginning of a new line for 
lines already starting with a period. (per rfc2821, this is 
to distinguish between the single period used for marking 
the end of a message). This is reproducable every time.

I also saw the function make a ".." in the middle of a line 
as "." where what was really wanted was "..". 

<?php
/* here is my temporary fix, but also further explains the 
problem */
/* 1. Replace all of the \n\.\. with \r\. */
$part = preg_replace('/(\n)\.\./is','$1.',$part);

/* 2. Replace all of the .. with =2E.  */
$part = preg_replace('/\.\./is','=2E.',$part);

/* 3. Decode print quotable */
$part = quoted_printable_decode($part);

echo $part ;

?>


Reproduce code:
---------------
G=8D=C2r+?yo7*=C0=C0=99=D2=B4HT=D1=E2}=AA=FE[=E0=D2=E0J=B5$o=DA=8F>=9B..=
o=B5d=F6u,=F27=AA6VN=0FM=9F=03=3Dj=3DU=FBl=CF=1A=A1|ok=B3G=AD=B0Y=CF(=D4=
=AC=B4=B0^a=1B&_=D3=AA=3DD=F4s=B8H=AD=D7=97q=E8=08=D4=EBi=14G#=85=83=C5=81=
..=FD~=0E=12i=D4=1A=8C=EA=F5=FD=1C,Q=BB=E87=D3=D6=DE=C9=C2^=DC=D2=0D=F1=DD=



$part = quoted_printable_decode($part);

Expected result:
----------------
<PRE>G?r+?yo7*??ҴHT??}?[???J?$o?>..o?d?u,?7?6VNM=
j=U?l??|okG?Y?(Ԭ??^a&_Ӫ=
D?s?Hq???iG#?.~i???,Q??7????^??
?</PRE>

Actual result:
--------------
<PRE>G?r+?yo7*??ҴHT??}?[???J?$o?>..o?d?u,?7?6VNM=
j=U?l??|okG?Y?(Ԭ??^a&_Ӫ=
D?s?Hq???iG#?..~i???,Q??7????^??
?</PRE>

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-04-12 17:27 UTC] derick@php.net
AFAIK it only doubles the . if it's the ONLY character on a line. Can you quote from the RFC to prove that's not the case?

Also, please provide a selfcontained example (that we can copy & paste & run) to show why you think there is a bug.
 [2004-04-12 18:03 UTC] br at creativedigitalcolor dot com
quote rfc2821 section 4.5.2:

"   -  Before sending a line of mail text, the SMTP 
client checks the first character of the line.  If it is 
a period, one additional period is inserted at the 
beginning of the line."

<?php

$part = 
"=41=42=43=44..=45=46=47=61=62=63=64=65=66=67=68=30=31=3
2=33=34=35=36=37\n..=41=42=43=44=45=46=47=61=62=63=64=65
=66=67=68=30=31=32=33=34=35=36=37";

$part = quoted_printable_decode($part);

echo "Expected result\n";
echo "ABCD..EFGabcdefgh01234567
.ABCDEFGabcdefgh01234567";

echo "\n\nGot result\n";
echo $part;

echo "\n\n";

?>
 [2004-04-12 20:10 UTC] sniper@php.net
Aren't you now mixing two different things with each other?
The function quoted_printable_decode() is doing the same as imap_qprint() which conforms to RFC2045, section 6.7..

 [2004-04-12 21:06 UTC] br at creativedigitalcolor dot com
After taking a while to build php with the c-client 
library i found that the imap_qprint produced identical 
results (the extra period was still there). I can not 
deterimine wether or not this is a bug becuase it is a 
question of interpretation.(Are these functions meant to 
run line by line or as one longer string) Either way, 
that pesky period will need removed before the 
attachments can be correctly saved the way they were 
sent.I know from the diff that pine (my email client) 
did remove the extra period when it decoded the 
attachment from the identicat file I parsed with 
php."Quoted printable" needs better defined to be 
included along with the many clearly defined PHP String 
Functions.
 [2004-04-12 22:53 UTC] sniper@php.net
Reclassified.

Since you're the first and only person complaining about this, we're not gonna change the behaviour but rather write better documentation for this/these functions in question..

 [2004-09-17 16:24 UTC] vrana@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.

"(according to RFC2045, section 6.7, not RFC2821, section 4.5.2, so additional periods are not stripped from the beginning of line)"
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon May 06 14:01:33 2024 UTC