You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/10/16 08:21:34 UTC
svn commit: r585053 - in /mina:
branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/
branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/
trunk/core/src/main/java/org/apache/mina/filter/codec/textline/
Author: trustin
Date: Mon Oct 15 23:21:30 2007
New Revision: 585053
URL: http://svn.apache.org/viewvc?rev=585053&view=rev
Log:
Fixed issue: DIRMINA-454 (Trivial denial of service in TextLineDecoder)
* Applied Owen Jacobson's patch
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java?rev=585053&r1=585052&r2=585053&view=diff
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java Mon Oct 15 23:21:30 2007
@@ -170,11 +170,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -189,7 +185,7 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
}
@@ -218,11 +214,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -240,9 +232,17 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
+ }
+
+ private void appendToOutput (ByteBuffer in, ByteBuffer buf) {
+ buf.put(in);
+ if (buf.position() > maxLineLength) {
+ throw new BufferDataException("Line is too long: "
+ + buf.position());
+ }
}
private class Context {
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java?rev=585053&r1=585052&r2=585053&view=diff
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java Mon Oct 15 23:21:30 2007
@@ -168,11 +168,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -187,7 +183,7 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
}
@@ -216,11 +212,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -238,9 +230,17 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
+ }
+
+ private void appendToOutput (ByteBuffer in, ByteBuffer buf) {
+ buf.put(in);
+ if (buf.position() > maxLineLength) {
+ throw new BufferDataException("Line is too long: "
+ + buf.position());
+ }
}
private class Context {
Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java?rev=585053&r1=585052&r2=585053&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java Mon Oct 15 23:21:30 2007
@@ -168,11 +168,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -187,7 +183,7 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
}
@@ -216,11 +212,7 @@
in.limit(pos);
in.position(oldPos);
- buf.put(in);
- if (buf.position() > maxLineLength) {
- throw new BufferDataException("Line is too long: "
- + buf.position());
- }
+ appendToOutput (in, buf);
buf.flip();
buf.limit(buf.limit() - matchCount);
out.write(buf.getString(decoder));
@@ -238,9 +230,17 @@
// Put remainder to buf.
in.position(oldPos);
- buf.put(in);
+ appendToOutput (in, buf);
return matchCount;
+ }
+
+ private void appendToOutput (ByteBuffer in, ByteBuffer buf) {
+ buf.put(in);
+ if (buf.position() > maxLineLength) {
+ throw new BufferDataException("Line is too long: "
+ + buf.position());
+ }
}
private class Context {