Author: trustin
Date: Wed Apr 18 01:18:45 2007
New Revision: 529912
URL: http://svn.apache.org/viewvc?view=rev&rev=529912
Log:
Fixed issue: DIRMINA-282 (Prevent writing an empty buffer or null message)
* Added check code to ProtocolEncoderOutput.write(),
ProtocolDecoderOutput.write(), and IoSession.write()
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoSession.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolDecoderOutput.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoSession.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoSession.java?view=diff&rev=529912&r1=529911&r2=529912
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoSession.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoSession.java
Wed Apr 18 01:18:45 2007
@@ -25,6 +25,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.CloseFuture;
import org.apache.mina.common.DefaultWriteRequest;
import org.apache.mina.common.IdleStatus;
@@ -139,6 +140,14 @@
public WriteFuture write( Object message, SocketAddress remoteAddress )
{
+ if (message == null) {
+ throw new NullPointerException("message");
+ }
+
+ if (message instanceof ByteBuffer && !((ByteBuffer)
message).hasRemaining()) {
+ throw new IllegalArgumentException("message is empty. Forgot to
call flip()?");
+ }
+
synchronized( lock )
{
if( isClosing() || !isConnected() )
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolDecoderOutput.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolDecoderOutput.java?view=diff&rev=529912&r1=529911&r2=529912
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolDecoderOutput.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolDecoderOutput.java
Wed Apr 18 01:18:45 2007
@@ -48,6 +48,10 @@
public void write( Object message )
{
+ if (message == null) {
+ throw new NullPointerException("message");
+ }
+
messageQueue.offer( message );
if( session instanceof BaseIoSession )
{
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java?view=diff&rev=529912&r1=529911&r2=529912
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
Wed Apr 18 01:18:45 2007
@@ -47,7 +47,11 @@
public void write( ByteBuffer buf )
{
- bufferQueue.offer( buf );
+ if (buf.hasRemaining()) {
+ bufferQueue.offer( buf );
+ } else {
+ throw new IllegalArgumentException("buf is empty. Forgot to call
flip()?");
+ }
}
public void mergeAll()