Your message dated Sat, 03 Dec 2005 21:46:04 -0600
with message-id <[EMAIL PROTECTED]>
and subject line mime-codecs is being removed from unstable
has caused the attached Bug report to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--------------------------------------
Received: (at submit) by bugs.debian.org; 8 Nov 2005 09:30:59 +0000
>From [EMAIL PROTECTED] Tue Nov 08 01:30:59 2005
Return-path: <[EMAIL PROTECTED]>
Received: from relay00.pair.com (relay.pair.com) [209.68.5.9]
by spohr.debian.org with smtp (Exim 3.36 1 (Debian))
id 1EZPog-0006Pr-00; Tue, 08 Nov 2005 01:30:58 -0800
Received: (qmail 71818 invoked from network); 8 Nov 2005 09:30:56 -0000
Received: from unknown (HELO localhost.localdomain) (unknown)
by unknown with SMTP; 8 Nov 2005 09:30:56 -0000
X-pair-Authenticated: 216.254.116.241
Received: from dkg by localhost.localdomain with local (Exim 4.54)
id 1EZPm5-0002WD-FL; Tue, 08 Nov 2005 04:28:17 -0500
Content-Type: multipart/mixed; boundary="===============2011377071=="
MIME-Version: 1.0
From: Daniel Kahn Gillmor <[EMAIL PROTECTED]>
To: Debian Bug Tracking System <[EMAIL PROTECTED]>
Subject: mime-codecs: base64-decode fails to properly decode many valid
base64-encoded files
X-Mailer: reportbug 3.17
Date: Tue, 08 Nov 2005 04:28:17 -0500
Message-Id: <[EMAIL PROTECTED]>
Delivered-To: [EMAIL PROTECTED]
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02
(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Level:
X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE
autolearn=no version=2.60-bugs.debian.org_2005_01_02
This is a multi-part MIME message sent by reportbug.
--===============2011377071==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Package: mime-codecs
Version: 7.19-7
Severity: grave
Tags: patch
Justification: renders package unusable
It appears that the buffering recently introduced to base64-decode has
some major flaws in it that render of all base64-encoded files that
are larger than the input buffer size (~36K) unreadable with the new
base64-decode. This appears to be the case despite the same encoded
files decoding cleanly with both
- sarge's version of base64-decode (7.19-4), and
- perl -M"MIME::Base64" -ne 'print decode_base64($_)'
i'm attaching a file that appears to fail for me as "test1", but since
i don't want people who are trying to replicate this to rely on the
base64-decode in their MUA i've provided the same file here:
http://lair.fifthhorseman.net/~dkg/src/vm/test1
Doing what should be an identity transformation on this file
highlights the problem right at the end of the file:
[EMAIL PROTECTED] test]$ <test1 base64-encode | base64-decode >test1.out
[EMAIL PROTECTED] test]$ ls -l test1 test1.out
-rw-r--r-- 1 dkg dkg 26632 2005-11-08 01:16 test1
-rw-r--r-- 1 dkg dkg 26632 2005-11-08 03:52 test1.out
[EMAIL PROTECTED] test]$ cmp -bl test1 test1.out
26631 32 ^Z 150 h
26632 36 ^^ 170 x
[EMAIL PROTECTED] test]$
As you can see, the last two bytes are both left-shifted by two bits.
The input buffer is filling up a couple bytes shy of the end of the
base64-encoded version, and then the special-case handling of the
ending bytes kicks in inappropriately. It should be kicking in only
at the end of the input stream, not at the end of the buffer.
i'm attaching a patch which appears to resolve the problem for me by
straightening out the flow of control, properly initializing some
variables, and removing the goto (considered harmful!) which doesn't
appear to be needed.
The type of failure you get from base64-decode appears to depend
exclusively on the length of the program's stdin relative to its input
buffer. If you want to generate more test cases to see that things
fail right around 26631 bytes of un-encoded data (assuming BUFLEN is
still 72*500), try:
for N in 26630 26631 26632 26633; do
dd if=/dev/urandom of=test$N bs=$N count=1 2>/dev/null
<test$N base64-encode | base64-decode >test$N.out
if (cmp -bl test$N test$N.out); then
echo OK
fi
done
when N=26631, you get errors from the decode that look like:
base64-decode: base64 encoding incomplete: at least 2 bits missing
which are a result of the same buffering failure.
I hope these diagnostics are helpful. Thanks for maintaining this
package! If i can provide any more examples or test cases, please let
me know.
Regards,
--dkg
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (700, 'testing'), (700, 'stable'), (600, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-686
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Versions of packages mime-codecs depends on:
ii libc6 2.3.5-6 GNU C Library: Shared libraries an
mime-codecs recommends no packages.
-- no debconf information
--===============2011377071==
Content-Type: application/octet-stream
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test1"
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
qtAtqCeFKmJi69EaHg==
--===============2011377071==
Content-Type: text/x-c; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="base64-decode-buffer-basic-fix.diff"
--- vm/base64-decode.c 2005-11-08 03:38:45.000000000 -0500
+++ vm.basic-fix/base64-decode.c 2005-11-08 03:37:02.000000000 -0500
@@ -4,6 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#ifdef _WIN32
#ifndef WIN32
@@ -22,7 +23,7 @@
main(void)
{
static char inalphabet[256], decoder[256];
- int i, bits, char_count, errors = 0;
+ int i, bits = 0, char_count = 0, errors = 0;
#ifdef WIN32
_setmode( _fileno(stdout), _O_BINARY);
@@ -47,9 +48,6 @@
len=fread(buf, sizeof(c), BUFLEN, stdin);
if(!len) continue;
-cont_buffer:
- char_count = 0;
- bits = 0;
while(pos<len) {
c=buf[pos++];
if (c == '=')
@@ -68,17 +66,20 @@
bits <<= 6;
}
}
+ fwrite(outbuf, sizeof(char), (out-outbuf), stdout);
+ }
+
switch (char_count) {
case 1:
fprintf(stderr, "base64-decode: base64 encoding incomplete: at
least 2 bits missing");
errors++;
break;
case 2:
- *out++ = ((bits >> 10));
+ fputc((bits >> 10), stdout);
break;
case 3:
- *out++ = ((bits >> 16));
- *out++ = (((bits >> 8) & 0xff));
+ fputc((bits >> 16), stdout);
+ fputc(((bits >> 8) & 0xff), stdout);
break;
case 0:
break;
@@ -86,9 +87,5 @@
fprintf(stderr, "base64-decode: base64 encoding incomplete: at
least %d bits truncated",
((4 - char_count) * 6));
}
- if(pos<len) // did not proceed the whole thing, continue
- goto cont_buffer;
- fwrite(outbuf, sizeof(char), (out-outbuf), stdout);
- }
exit(errors ? 1 : 0);
}
--===============2011377071==--
---------------------------------------
Received: (at 338115-done) by bugs.debian.org; 4 Dec 2005 03:46:29 +0000
>From [EMAIL PROTECTED] Sat Dec 03 19:46:29 2005
Return-path: <[EMAIL PROTECTED]>
Received: from host-12-107-230-171.dtccom.net ([12.107.230.171]
helo=glaurung.internal.golden-gryphon.com)
by spohr.debian.org with esmtp (Exim 4.50)
id 1EikpZ-0006Jp-02; Sat, 03 Dec 2005 19:46:29 -0800
Received: from glaurung.internal.golden-gryphon.com ([EMAIL PROTECTED]
[127.0.0.1])
by glaurung.internal.golden-gryphon.com (8.13.5/8.13.5/Debian-3) with
ESMTP id jB43k562005577
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);
Sat, 3 Dec 2005 21:46:05 -0600
Received: (from [EMAIL PROTECTED])
by glaurung.internal.golden-gryphon.com (8.13.5/8.13.5/Submit) id
jB43k4Xh005575;
Sat, 3 Dec 2005 21:46:04 -0600
X-Authentication-Warning: glaurung.internal.golden-gryphon.com: srivasta set
sender to [EMAIL PROTECTED] using -f
From: Manoj Srivastava <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED]
Subject: mime-codecs is being removed from unstable
Organization: The Debian Project
User-Agent: Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux)
(i686-pc-linux-gnu)
Face: iVBORw0KGgoAAAANSUhEUgAAACYAAAAwCAMAAABKbPgaAAAAM1BMVEUAAADIjH/0rp1KPz79
0b+ic2nlpJc2Ly2AY17VlYb4uqi2gHQXFBN2WVXgno5iT02Xa2Nx+jaIAAACVElEQVQ4je
WU23bjIAxFLUAggQX6/6+dI9LGTpo+9mlYiXNhc3TnOP50naZE0tqvgEk+soutnNfQ8yPT
WMTENhNrjI+Y+N7POVt8tAzpn2vJlsmttbyfrdkP7hx5iezteGzsbOts7xT+tC1mcG+LtR
P2X/16bEQExuyx1uZWvscrAWUT8aE0aDBeBuw8nS5u4WgWyDCllOZUBeyWgbWbGrBsTDpT
x0qpphlcYPcgJLvBXFClPMg56WH2JidLIAaDF5aAed7uPTH4bjw0bZvfajp2tHc1F+cBm+
Vr9YomGSwNhbmcczYEWUu5MBpYvCLVF+ZIKwQfYB+CBXnIRQFvIRhK6l96PemsFLEPFxi+
MPxiTYH0Ave1InPsIYes3NJb42ytBSmmysyjlIQYHJm6Im1WbQ0kWMesKFRFPKTDzJ3GhW
Un2KWKEkWlKthoACLm2eWJQQh2qKbAUgQxa+8TVjn1aySm8656ookCfCc5TRzvnZ6YOu3N
pHg+uR5YuRkNF/b5IHq5Y7Ve6c2+sR4hqIZ3+5DCt3ukh8EovFIXVJxqfMdbkd/BF3YaQk
B/2RIUHPMS7RLVAHefrYzWZVQ/ei4peBsROFLi90ltQyvF5I05t4ZsL4C9DODJ2AZCUf8U
itGjCIdfx15QQkfZibTOGT3edxns5fY6F2rstKcTwiiaJnQwvYkdzTlaTqNHIkSmGdLrON
45tGsMNDoSYr4bxH5emHEFaoFjKBahHXFXfLx9cR9p6ejJXihuxPz57gWHZkWovbPl9gsU
8eImtBi++3D+f+sfT/Mg79fyEz8AAAAASUVORK5CYII=
X-URL: http://www.debian.org/%7Esrivasta/
Mail-Copies-To: nobody
X-Face: [EMAIL PROTECTED]/;Y^gTjR\T^"B'fbeuVGiyKrvbfKJl!^e|e:iu(kJ6c|QYB57LP*|t
&YlP~HF/=h:[EMAIL PROTECTED]:6Cj0kd#4]>*D,|0djf'CVlXkI,>aV4\}?d_KEqsN{Nnt7
78"OsbQ["56/!nisvyB/uA5Q.{)gm6?q.j71ww.>b9b]-sG8zNt%KkIa>xWg&1VcjZk[hBQ>]j~`Wq
Xl,y1a!(>6`UM{~'X[Y_,Bv+}=L\SS*mA8=s;!=O`ja|@PEzb&i0}Qp,`Z\:6:OmRi*
X-Hashcash: 1:25:051204:[EMAIL
PROTECTED]::21iQLWdn24Bk4vW+:00000000000000000000000000000000000cjn
X-Hashcash: 1:25:051204:[EMAIL
PROTECTED]::Cqgr2raB7IAScM/L:0000000000000000000000000000000001mqBh
X-Hashcash: 1:25:051204:[EMAIL
PROTECTED]::/Y4oNebUhSPh1Nrw:0000000000000000000000000000000000ogrD
Date: Sat, 03 Dec 2005 21:46:04 -0600
Message-ID: <[EMAIL PROTECTED]>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-CRM114-Score: -28.7005
X-CRM114-Status: Good ( pR: -28.7005 )
X-SA-Orig: -8.399, -28.7005
X-Spam-Value: -14.4379166666667
X-Grey: White
X-SA-Rep: -14.4379166666667 ALL_TRUSTED,BAYES_00,HASHCASH_25
X-Scanned-By: MIMEDefang version 2.53 (www . roaringpenguin . com / mimedefang)
on 192.168.1.10
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02
(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Level:
X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE
autolearn=no version=2.60-bugs.debian.org_2005_01_02
X-CrossAssassin-Score: 3
Package: mime-codecs
Version: 7.19-8
Hi,
The package mime-codecs is in the process of being removed
from unstable -- so there is no mime-codecs corresponding to VM
version 7.19-8.
Since the package is being removed, there is no way of working
on these flaws, indeed, Unstable, and soon, by extention, Etch, no
longer contain these bugs, I am closing them with a version which
does not really exist in Debian. This way, the bug remains, and
remains open, for the versions in which it does actually exist, but
is marked closed to reflect the fact that Sid no longer contains
these bugs.
manoj
--
"???" DEC's RSTS/E operating system
Manoj Srivastava <[EMAIL PROTECTED]> <http://www.debian.org/%7Esrivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]