directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kayyag...@apache.org
Subject svn commit: r1036938 - in /directory/apacheds/trunk/kerberos-codec/src: main/java/org/apache/directory/shared/kerberos/messages/KrbError.java test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
Date Fri, 19 Nov 2010 16:55:52 GMT
Author: kayyagari
Date: Fri Nov 19 16:55:51 2010
New Revision: 1036938

URL: http://svn.apache.org/viewvc?rev=1036938&view=rev
Log:
o fixed a possible NPE while performing unboxing of cusec value
o added more tests

Modified:
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/messages/KrbError.java
    directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/messages/KrbError.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/messages/KrbError.java?rev=1036938&r1=1036937&r2=1036938&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/messages/KrbError.java
(original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/messages/KrbError.java
Fri Nov 19 16:55:51 2010
@@ -154,6 +154,11 @@ public class KrbError extends KerberosMe
      */
     public int getCusec()
     {
+        if ( cusec == null )
+        {
+            return 0;
+        }
+        
         return cusec;
     }
 

Modified: directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java?rev=1036938&r1=1036937&r2=1036938&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
(original)
+++ directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
Fri Nov 19 16:55:51 2010
@@ -20,15 +20,19 @@
 
 package org.apache.directory.shared.kerberos.codec;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 
 import org.apache.directory.shared.asn1.ber.Asn1Decoder;
 import org.apache.directory.shared.asn1.codec.DecoderException;
 import org.apache.directory.shared.asn1.codec.EncoderException;
+import org.apache.directory.shared.kerberos.KerberosMessageType;
 import org.apache.directory.shared.kerberos.codec.krbError.KrbErrorContainer;
+import org.apache.directory.shared.kerberos.exceptions.ErrorType;
 import org.apache.directory.shared.kerberos.messages.KrbError;
 import org.apache.directory.shared.ldap.util.StringTools;
 import org.junit.Test;
@@ -102,12 +106,200 @@ public class KrbErrorDecoderTest
         }
         catch( DecoderException e )
         {
-            e.printStackTrace();
             fail();
         }
         
         KrbError krbError = container.getKrbError();
         
+        String time = "20101119080043Z";
+        assertEquals( 5, krbError.getProtocolVersionNumber() );
+        assertEquals( KerberosMessageType.KRB_ERROR, krbError.getMessageType() );
+        assertEquals( time, krbError.getcTime().getDate() );
+        assertEquals( 1, krbError.getCusec() );
+        assertEquals( time, krbError.getsTime().getDate() );
+        assertEquals( 2, krbError.getSusec() );
+        assertEquals( ErrorType.KDC_ERR_NONE, krbError.getErrorCode() );
+        assertEquals( "crealm", krbError.getcRealm() );
+        assertEquals( "cname", krbError.getcName().getNameString() );
+        assertEquals( "realm", krbError.getRealm() );
+        assertEquals( "sname", krbError.getsName().getNameString() );
+        assertEquals( "etext", krbError.geteText() );
+        assertTrue( Arrays.equals( new byte[]{0,1}, krbError.geteData() ) );
+        
+        int encodedLen = krbError.computeLength();
+        
+        assertEquals( streamLen, encodedLen );
+        
+        ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+        try
+        {
+            buffer = krbError.encode( buffer );
+            
+            assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+        }
+        catch( EncoderException e )
+        {
+            fail();
+        }
+    }
+    
+    
+    @Test
+    public void testDecodeKrbErrorWithoutCtime()
+    {
+        Asn1Decoder decoder = new Asn1Decoder();
+        
+        int streamLen = 0x7A;
+        ByteBuffer stream = ByteBuffer.allocate( streamLen );
+        stream.put( new byte[]
+        {
+                0x7E, (byte)0x78,
+                  0x30, (byte)0x76,
+                    (byte)0xA0, 0x03,           // pvno
+                      0x02, 0x01, 0x05,    
+                    (byte)0xA1, 0x03,           // msg-type
+                      0x02, 0x01, 0x1E,
+                      //
+                      // NO ctime
+                      //
+                    (byte)0xA3, 0x03,           // cusec
+                      0x02, 0x01, 0x01,
+                    (byte)0xA4, 0x11,           // stime
+                      0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0',
'4', '3', 'Z',
+                    (byte)0xA5, 0x03,           // susec
+                      0x02, 0x01, 0x02,
+                    (byte)0xA6, 0x03,           // error-code
+                      0x02, 0x01, 0x00,
+                    (byte)0xA7, 0x08,            // crealm
+                      0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xA8, 0x12,           // cname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+                    (byte)0xA9, 0x07,           // realm
+                      0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xAA, 0x12,           // sname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+                    (byte)0xAB, 0x07,           // e-text
+                      0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+                    (byte)0xAC, 0x04,           // e-data
+                      0x04, 0x02, 
+                        0x00, 0x01
+        } );
+        
+        String decoded = StringTools.dumpBytes( stream.array() );
+        stream.flip();
+        
+        KrbErrorContainer container = new KrbErrorContainer();
+        container.setStream( stream );
+        
+        try
+        {
+            decoder.decode( stream, container );
+        }
+        catch( DecoderException e )
+        {
+            fail();
+        }
+        
+        KrbError krbError = container.getKrbError();
+        
+        assertNull( krbError.getcTime() );
+        
+        int encodedLen = krbError.computeLength();
+        
+        assertEquals( streamLen, encodedLen );
+        
+        ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+        try
+        {
+            buffer = krbError.encode( buffer );
+            
+            assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+        }
+        catch( EncoderException e )
+        {
+            fail();
+        }
+    }
+
+    
+    @Test
+    public void testDecodeKrbErrorWithoutCusec()
+    {
+        Asn1Decoder decoder = new Asn1Decoder();
+        
+        int streamLen = 0x8A;
+        ByteBuffer stream = ByteBuffer.allocate( streamLen );
+        stream.put( new byte[]
+        {
+                0x7E, (byte)0x81, (byte)0x87,
+                  0x30, (byte)0x81, (byte)0x84,
+                    (byte)0xA0, 0x03,           // pvno
+                      0x02, 0x01, 0x05,    
+                    (byte)0xA1, 0x03,           // msg-type
+                      0x02, 0x01, 0x1E,   
+                    (byte)0xA2, 0x11,           // ctime
+                      0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0',
'4', '3', 'Z',
+                      // NO cuses
+                    (byte)0xA4, 0x11,           // stime
+                      0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0',
'4', '3', 'Z',
+                    (byte)0xA5, 0x03,           // susec
+                      0x02, 0x01, 0x02,
+                    (byte)0xA6, 0x03,           // error-code
+                      0x02, 0x01, 0x00,
+                    (byte)0xA7, 0x08,            // crealm
+                      0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xA8, 0x12,           // cname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+                    (byte)0xA9, 0x07,           // realm
+                      0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xAA, 0x12,           // sname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+                    (byte)0xAB, 0x07,           // e-text
+                      0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+                    (byte)0xAC, 0x04,           // e-data
+                      0x04, 0x02, 
+                        0x00, 0x01
+        } );
+        
+        String decoded = StringTools.dumpBytes( stream.array() );
+        stream.flip();
+        
+        KrbErrorContainer container = new KrbErrorContainer();
+        container.setStream( stream );
+        
+        try
+        {
+            decoder.decode( stream, container );
+        }
+        catch( DecoderException e )
+        {
+            fail();
+        }
+        
+        KrbError krbError = container.getKrbError();
+        
+        assertEquals( 0, krbError.getCusec() );
+        
         int encodedLen = krbError.computeLength();
         
         assertEquals( streamLen, encodedLen );
@@ -124,4 +316,91 @@ public class KrbErrorDecoderTest
             fail();
         }
     }
+
+    @Test
+    public void testDecodeKrbErrorWithoutCtimeAndCusec()
+    {
+        Asn1Decoder decoder = new Asn1Decoder();
+        
+        int streamLen = 0x75;
+        ByteBuffer stream = ByteBuffer.allocate( streamLen );
+        stream.put( new byte[]
+        {
+                0x7E, (byte)0x73,
+                  0x30, (byte)0x71,
+                    (byte)0xA0, 0x03,           // pvno
+                      0x02, 0x01, 0x05,    
+                    (byte)0xA1, 0x03,           // msg-type
+                      0x02, 0x01, 0x1E,
+                      //
+                      // NO ctime, cusec
+                      //
+                    (byte)0xA4, 0x11,           // stime
+                      0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0',
'4', '3', 'Z',
+                    (byte)0xA5, 0x03,           // susec
+                      0x02, 0x01, 0x02,
+                    (byte)0xA6, 0x03,           // error-code
+                      0x02, 0x01, 0x00,
+                    (byte)0xA7, 0x08,            // crealm
+                      0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xA8, 0x12,           // cname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+                    (byte)0xA9, 0x07,           // realm
+                      0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+                    (byte)0xAA, 0x12,           // sname
+                      0x30, 0x10, 
+                        (byte)0xA0, 0x03,
+                          0x02, 0x01, 0x00, 
+                        (byte)0xA1, 0x09, 
+                          0x30, 0x07, 
+                            0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+                    (byte)0xAB, 0x07,           // e-text
+                      0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+                    (byte)0xAC, 0x04,           // e-data
+                      0x04, 0x02, 
+                        0x00, 0x01
+        } );
+        
+        String decoded = StringTools.dumpBytes( stream.array() );
+        stream.flip();
+        
+        KrbErrorContainer container = new KrbErrorContainer();
+        container.setStream( stream );
+        
+        try
+        {
+            decoder.decode( stream, container );
+        }
+        catch( DecoderException e )
+        {
+            fail();
+        }
+        
+        KrbError krbError = container.getKrbError();
+        
+        assertNull( krbError.getcTime() );
+        assertEquals( 0, krbError.getCusec() );
+        
+        int encodedLen = krbError.computeLength();
+        
+        assertEquals( streamLen, encodedLen );
+        
+        ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+        try
+        {
+            buffer = krbError.encode( buffer );
+            
+            assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+        }
+        catch( EncoderException e )
+        {
+            fail();
+        }
+    }
+
 }



Mime
View raw message