#27966 [Fbk->Opn]: double periods with quoted_printable_decode

From: Date: Mon, 12 Apr 2004 22:03:16 +0000
Subject: #27966 [Fbk->Opn]: double periods with quoted_printable_decode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-57981@lists.php.net to get a copy of this message
ID: 27966 User updated by: br at creativedigitalcolor dot com Reported By: br at creativedigitalcolor dot com -Status: Feedback +Status: Open Bug Type: Strings related Operating System: redhat 9 PHP Version: 4.3.4 New Comment: 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"; ?> Previous Comments: ------------------------------------------------------------------------ [2004-04-12 17:27:31] 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 16:04:03] 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> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27966&edit=1

« previous php.bugs (#57981) next »