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()


Reply via email to