You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/05/04 07:57:14 UTC

svn commit: r168084 - /directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java

Author: elecharny
Date: Tue May  3 22:57:13 2005
New Revision: 168084

URL: http://svn.apache.org/viewcvs?rev=168084&view=rev
Log:
- Fixed some javadoc
- when the req flags bitstring is empty, does now throw an exception
- the BitString is now pooled

Modified:
    directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java

Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java?rev=168084&r1=168083&r2=168084&view=diff
==============================================================================
--- directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java (original)
+++ directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java Tue May  3 22:57:13 2005
@@ -390,7 +390,7 @@
         //    ...
         //    reqFlags      [1]  ContextFlags  OPTIONAL, (Value)
         //    ...
-        // The next state will be the MechToken following
+        // Nothing to do. 
         super.transitions[SpnegoStatesEnum.SPNEGO_REQ_FLAGS_VALUE][0xA1] = new GrammarTransition(
                 SpnegoStatesEnum.SPNEGO_REQ_FLAGS_VALUE, SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_TAG,
                 null );
@@ -404,7 +404,7 @@
         //     confFlag      (5),
         //     integFlag     (6)
         // }
-        // The next state will be the MechToken following
+        // Nothing to do. We have a BitString
         super.transitions[SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_TAG][0x03] = new GrammarTransition(
                 SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_TAG, SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_LENGTH,
                 null );
@@ -418,7 +418,8 @@
         //     confFlag      (5),
         //     integFlag     (6)
         // }
-        // The next state will be the MechToken following
+        // We have to check the length, and handle the special case of an empty length, which 
+        /// is an error.
         super.transitions[SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_LENGTH][0x03] = new GrammarTransition(
                 SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_LENGTH, SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_VALUE,
                 new GrammarAction( "Req Flags Length" )
@@ -439,16 +440,9 @@
                         
                         if (tlv.getLength().getLength() == 0)
                         {
-                            spnego.setAnonFlag(false);
-                            spnego.setConfFlag(false);
-                            spnego.setDelegFlag(false);
-                            spnego.setIntegFlag(false);
-                            spnego.setMutualFlag(false);
-                            spnego.setReplayFlag(false);
-                            spnego.setSequenceFlag(false);
+                            throw new DecoderException("The req flags must not be empty");
                         }
 
-                        // The flags wioll be set in the next state
                         return;
                     }
                 } );
@@ -473,18 +467,27 @@
                         SpnegoNegTokenInitPOJO spnego   = ( SpnegoNegTokenInitPOJO )spnegoContainer.getSpnego();
                         TLV				tlv 			= spnegoContainer.getCurrentTLV();
 
-                        // Get the req falgs and set the flag
-                        BitString bitString = new BitString(tlv.getValue().getData());
-                        
-                        spnego.setAnonFlag(bitString.getBit(0));
-                        spnego.setConfFlag(bitString.getBit(1));
-                        spnego.setDelegFlag(bitString.getBit(2));
-                        spnego.setIntegFlag(bitString.getBit(3));
-                        spnego.setMutualFlag(bitString.getBit(4));
-                        spnego.setReplayFlag(bitString.getBit(5));
-                        spnego.setSequenceFlag(bitString.getBit(6));
+                        // Get the req flags and set the flag
+                        try 
+                        {
+                            BitString bitString = (BitString)(spnegoContainer.getPoolManager().allocate(PoolEnum.BIT_STRING_POOL));
+                            bitString.setData(tlv.getValue().getData());
 
-                        bitString = null;
+                            spnego.setAnonFlag(bitString.getBit(0));
+                            spnego.setConfFlag(bitString.getBit(1));
+                            spnego.setDelegFlag(bitString.getBit(2));
+                            spnego.setIntegFlag(bitString.getBit(3));
+                            spnego.setMutualFlag(bitString.getBit(4));
+                            spnego.setReplayFlag(bitString.getBit(5));
+                            spnego.setSequenceFlag(bitString.getBit(6));
+
+                            bitString.free();
+                        }
+                        catch (PoolException pe)
+                        {
+                            throw new DecoderException("Cannot allocate a BitString : " + pe.getMessage());
+                        }
+                        
                         return;
                     }
                 } );