You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ni...@apache.org on 2005/06/07 13:36:38 UTC
svn commit: r188748 - in /james/mime4j/trunk/src:
java/org/mime4j/decoder/DecoderUtil.java
test/org/mime4j/decoder/DecoderUtilTest.java
Author: niklas
Date: Tue Jun 7 04:36:37 2005
New Revision: 188748
URL: http://svn.apache.org/viewcvs?rev=188748&view=rev
Log:
Fixed bug causing OutOfMemoryError when decoding strings which contain =? but are not encoded words.
Modified:
james/mime4j/trunk/src/java/org/mime4j/decoder/DecoderUtil.java
james/mime4j/trunk/src/test/org/mime4j/decoder/DecoderUtilTest.java
Modified: james/mime4j/trunk/src/java/org/mime4j/decoder/DecoderUtil.java
URL: http://svn.apache.org/viewcvs/james/mime4j/trunk/src/java/org/mime4j/decoder/DecoderUtil.java?rev=188748&r1=188747&r2=188748&view=diff
==============================================================================
--- james/mime4j/trunk/src/java/org/mime4j/decoder/DecoderUtil.java (original)
+++ james/mime4j/trunk/src/java/org/mime4j/decoder/DecoderUtil.java Tue Jun 7 04:36:37 2005
@@ -193,7 +193,7 @@
*/
p2 = t2 != -1 ? body.indexOf("?=", t2 + 1) : -1;
if (p2 == -1) {
- if (body.charAt(t2 + 1) == '=') {
+ if (t2 != -1 && body.charAt(t2 + 1) == '=') {
/*
* The text "=?charset?enc?=" appears to be valid for
* empty strings.
@@ -239,13 +239,13 @@
+"corresponding Java charset");
}
} else if (!CharsetUtil.isDecodingSupported(charset)) {
- decodedWord = body.substring(p1, p2 + 2);
- if (log.isWarnEnabled()) {
- log.warn("Current JDK doesn't support decoding "
- + "of charset '" + charset
- + "' (MIME charset '"
- + mimeCharset + "')");
- }
+ decodedWord = body.substring(p1, p2 + 2);
+ if (log.isWarnEnabled()) {
+ log.warn("Current JDK doesn't support decoding "
+ + "of charset '" + charset
+ + "' (MIME charset '"
+ + mimeCharset + "')");
+ }
} else {
if (enc.equalsIgnoreCase("Q")) {
decodedWord = DecoderUtil.decodeQ(encodedWord, charset);
Modified: james/mime4j/trunk/src/test/org/mime4j/decoder/DecoderUtilTest.java
URL: http://svn.apache.org/viewcvs/james/mime4j/trunk/src/test/org/mime4j/decoder/DecoderUtilTest.java?rev=188748&r1=188747&r2=188748&view=diff
==============================================================================
--- james/mime4j/trunk/src/test/org/mime4j/decoder/DecoderUtilTest.java (original)
+++ james/mime4j/trunk/src/test/org/mime4j/decoder/DecoderUtilTest.java Tue Jun 7 04:36:37 2005
@@ -20,7 +20,6 @@
import junit.framework.TestCase;
import org.apache.log4j.BasicConfigurator;
-import org.mime4j.util.CharsetUtil;
/**
*
@@ -59,7 +58,7 @@
assertEquals("á â\tã ä ", s);
}
- public void testDecodeBody() {
+ public void testDecodeEncodedWords() {
assertEquals("", DecoderUtil.decodeEncodedWords(""));
assertEquals("Yada yada", DecoderUtil.decodeEncodedWords("Yada yada"));
assertEquals(" áâã\tä",
@@ -75,5 +74,11 @@
DecoderUtil.decodeEncodedWords("=?US-ASCII?b?QSBzaG9ydCB0ZXh0IGFnYWluIQ==?="));
assertEquals("", DecoderUtil.decodeEncodedWords("=?iso8859-1?Q?="));
assertEquals("", DecoderUtil.decodeEncodedWords("=?iso8859-1?b?="));
+
+ /*
+ * Bug detected on June 7, 2005. Decoding the following string caused
+ * OutOfMemoryError.
+ */
+ assertEquals("=3?!!\\=?\"!g6P\"!Xp:\"!", DecoderUtil.decodeEncodedWords("=3?!!\\=?\"!g6P\"!Xp:\"!"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org