128 lines
4.2 KiB
Plaintext
128 lines
4.2 KiB
Plaintext
|
Index: bogofilter/AUTHORS
|
||
|
===================================================================
|
||
|
--- bogofilter/AUTHORS (revision 7015)
|
||
|
+++ bogofilter/AUTHORS (revision 7016)
|
||
|
@@ -55,3 +55,4 @@
|
||
|
Marco Bozzolan
|
||
|
Paul Mangan
|
||
|
Roman Trunov
|
||
|
+Julius Plenz
|
||
|
Index: bogofilter/src/tests/inputs/t.passthrough-truncation-in.gz
|
||
|
===================================================================
|
||
|
Cannot display: file marked as a binary type.
|
||
|
svn:mime-type = application/octet-stream
|
||
|
Index: bogofilter/src/tests/inputs/t.passthrough-truncation-in.gz
|
||
|
===================================================================
|
||
|
--- bogofilter/src/tests/inputs/t.passthrough-truncation-in.gz (nonexistent)
|
||
|
+++ bogofilter/src/tests/inputs/t.passthrough-truncation-in.gz (revision 7016)
|
||
|
|
||
|
Property changes on: bogofilter/src/tests/inputs/t.passthrough-truncation-in.gz
|
||
|
___________________________________________________________________
|
||
|
Added: svn:mime-type
|
||
|
## -0,0 +1 ##
|
||
|
+application/octet-stream
|
||
|
\ No newline at end of property
|
||
|
Index: bogofilter/src/tests/t.passthrough-truncation
|
||
|
===================================================================
|
||
|
--- bogofilter/src/tests/t.passthrough-truncation (nonexistent)
|
||
|
+++ bogofilter/src/tests/t.passthrough-truncation (revision 7016)
|
||
|
@@ -0,0 +1,19 @@
|
||
|
+#! /bin/sh
|
||
|
+
|
||
|
+. ${srcdir:=.}/t.frame
|
||
|
+
|
||
|
+# t.passthrough-hb
|
||
|
+#
|
||
|
+# test for correct passthrough of misdeclared MIME parts
|
||
|
+# test case provided by Julius Plenz, July 2014.
|
||
|
+
|
||
|
+gzip -c -d <"$srcdir/inputs/t.passthrough-truncation-in.gz" >"$TMPDIR/input"
|
||
|
+$BOGOFILTER -e -p -C < "$TMPDIR/input" \
|
||
|
+| $GREP -v "^X-Bogosity: Unsure," > "$TMPDIR/output"
|
||
|
+
|
||
|
+if [ $verbose -eq 0 ]; then
|
||
|
+ cmp "$TMPDIR/input" "$TMPDIR/output"
|
||
|
+else
|
||
|
+ set +e
|
||
|
+ diff $DIFF_BRIEF "$TMPDIR/input" "$TMPDIR/output"
|
||
|
+fi
|
||
|
|
||
|
Property changes on: bogofilter/src/tests/t.passthrough-truncation
|
||
|
___________________________________________________________________
|
||
|
Added: svn:executable
|
||
|
## -0,0 +1 ##
|
||
|
+*
|
||
|
\ No newline at end of property
|
||
|
Index: bogofilter/src/tests/Makefile.am
|
||
|
===================================================================
|
||
|
--- bogofilter/src/tests/Makefile.am (revision 7015)
|
||
|
+++ bogofilter/src/tests/Makefile.am (revision 7016)
|
||
|
@@ -35,7 +35,7 @@
|
||
|
t.ignore_spam_header \
|
||
|
t.nullstatsprefix \
|
||
|
t.integrity t.integrity2 t.integrity3 \
|
||
|
- t.passthrough-hb \
|
||
|
+ t.passthrough-hb t.passthrough-truncation \
|
||
|
t.escaped.html t.escaped.url \
|
||
|
t.base64 t.split t.parsing \
|
||
|
t.lexer t.lexer.mbx t.lexer.qpcr t.lexer.eoh \
|
||
|
@@ -97,6 +97,7 @@
|
||
|
inputs/msg.split.dr.0118.base64 \
|
||
|
inputs/msg.split.gs.0119.text \
|
||
|
inputs/spam.mbx \
|
||
|
+ inputs/t.passthrough-truncation-in.gz \
|
||
|
outputs/MH.out \
|
||
|
outputs/bogolex.out \
|
||
|
outputs/bulkmode.out \
|
||
|
Index: bogofilter/src/lexer.c
|
||
|
===================================================================
|
||
|
--- bogofilter/src/lexer.c (revision 7015)
|
||
|
+++ bogofilter/src/lexer.c (revision 7016)
|
||
|
@@ -220,15 +220,25 @@
|
||
|
|
||
|
#ifndef DISABLE_UNICODE
|
||
|
if (encoding == E_UNICODE &&
|
||
|
- !msg_state->mime_dont_decode)
|
||
|
+ !msg_state->mime_dont_decode &&
|
||
|
+ count > 0)
|
||
|
{
|
||
|
iconvert(linebuff, buff);
|
||
|
+
|
||
|
+ /* If we return count = 0 here, the caller will think we have
|
||
|
+ * no more bytes left to read, even though before the iconvert
|
||
|
+ * call we had a positive number of bytes. This *will* lead to
|
||
|
+ * a message truncation which we try to avoid by simply
|
||
|
+ * returning the original input buffer (which has positive
|
||
|
+ * length) instead. */
|
||
|
+ if(buff->t.leng == 0)
|
||
|
+ memcpy(buff, linebuff, sizeof(*buff));
|
||
|
+
|
||
|
/*
|
||
|
* iconvert, treating multi-byte sequences, can shrink or enlarge
|
||
|
* the output compared to its input. Correct count.
|
||
|
*/
|
||
|
- if (count > 0)
|
||
|
- count = buff->t.leng;
|
||
|
+ count = buff->t.leng;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
Index: bogofilter/NEWS
|
||
|
===================================================================
|
||
|
--- bogofilter/NEWS (revision 7015)
|
||
|
+++ bogofilter/NEWS (revision 7016)
|
||
|
@@ -15,6 +15,13 @@
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
|
||
|
+ 2014-07-10
|
||
|
+
|
||
|
+ * Take patch from Julius Plenz to fix a bug in the charset converter
|
||
|
+ that causes truncation of messages in pass-through mode in rare
|
||
|
+ circumstances, for instance, if binary data is misdeclared as
|
||
|
+ text/html. Also add his test case, t.passthrough-truncation.
|
||
|
+
|
||
|
2013-11-30
|
||
|
|
||
|
* Updated autoconf/automake stuff so that tests work properly with
|