[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#446922: mimedecode: in nested parts, the outer content-transfer-encoding should be changed from 7bit to 8 bit when applicable



Package: mimedecode
Version: 1.9-4
Severity: normal


Please consider this input email:

| MIME-Version: 1.0
| Content-Type: multipart/mixed;
| 	boundary="----_=_NextPart_026_01C81003.683F8A00"
| 
| ------_=_NextPart_026_01C81003.683F8A00
| Content-Type: message/rfc822
| Content-Transfer-Encoding: 7bit
| 
| Content-Type: text/plain;
| 	charset="iso-8859-1"
| Content-Transfer-Encoding: quoted-printable
| 
| =E9
| 
| ------_=_NextPart_026_01C81003.683F8A00--

Here is the output when run through mimedecode

| MIME-Version: 1.0
| Content-Type: multipart/mixed;
| 	boundary="----_=_NextPart_026_01C81003.683F8A00"
| 
| ------_=_NextPart_026_01C81003.683F8A00
| Content-Type: message/rfc822
| Content-Transfer-Encoding: 7bit
| 
| Content-Type: text/plain;
| 	charset="iso-8859-1"
| X-Content-transfer-encoding: fixed from quoted-printable
| Content-Transfer-Encoding: 8bit
| 
| é
| 
| ------_=_NextPart_026_01C81003.683F8A00--


See how the part's Content-Transfer-Encoding still is 7bit even
though the part contains an 8bit character (e acute (0xE9)).

I would have expected something like:

| MIME-Version: 1.0
| Content-Type: multipart/mixed;
| 	boundary="----_=_NextPart_026_01C81003.683F8A00"
| 
| ------_=_NextPart_026_01C81003.683F8A00
| Content-Type: message/rfc822
| X-Content-transfer-encoding: changed from 7bit
| Content-Transfer-Encoding: 8bit
| 
| Content-Type: text/plain;
| 	charset="iso-8859-1"
| X-Content-transfer-encoding: fixed from quoted-printable
| Content-Transfer-Encoding: 8bit
| 
| é
| 
| ------_=_NextPart_026_01C81003.683F8A00--

Here is a patch that fixes it:

--- mimedecode.c~	2007-10-16 17:59:37.000000000 +0100
+++ mimedecode.c	2007-10-16 18:00:04.000000000 +0100
@@ -1234,8 +1234,7 @@ int transfer_encoding, content_type;
 	    break;
 
 	case BIT7:
-	    fprintf(stdout,"Content-Transfer-Encoding: 7bit\n");
-	    break;
+	    fprintf(stdout,"X-Content-transfer-encoding: changed from 7bit\n");
 
 	case BIT8:
 	    fprintf(stdout,"Content-Transfer-Encoding: 8bit\n");
@@ -1261,8 +1260,7 @@ int transfer_encoding, content_type;
 	    break;
 
 	case BIT7:
-	    fprintf(stdout,"Content-Transfer-Encoding: 7bit\n");
-	    break;
+	    fprintf(stdout,"X-Content-transfer-encoding: changed from 7bit\n");
 
 	case BIT8:
 	    fprintf(stdout,"Content-Transfer-Encoding: 8bit\n");

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.23.1
Locale: LANG=en_GB.ISO-8859-15, LC_CTYPE=en_GB.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash

Versions of packages mimedecode depends on:
ii  libc6                         2.6.1-4    GNU C Library: Shared libraries

mimedecode recommends no packages.

-- no debconf information




Reply to: