directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <directory-...@incubator.apache.org>
Subject [jira] Created: (DIR-105) Bad encoding of tags number above 127
Date Thu, 10 Feb 2005 22:57:12 GMT
Bad encoding of tags number above 127
-------------------------------------

         Key: DIR-105
         URL: http://issues.apache.org/jira/browse/DIR-105
     Project: Directory
        Type: Bug
    Reporter: Emmanuel Lecharny
 Assigned to: Alex Karasulu 
    Priority: Minor


Tere is a bug in functions :
org.apache.asn1.ber.Tag.getTagId(byte[])
and 
org.apache.asn1.ber.Tag.getTagId(TagOctetCollector)

when the tag has a number above 127 - which may be very unlikely to happen ! -. In this case,
bytes are decoded in the revert order :
 ...
        // calculate tag value w/ long tag format
        for( int ii = 1 ; ii < octets.length; ii++ )
        {
            int shift = ( ii - 1 ) * 7 ;
            id |= ( octets[ii] & LONG_MASK ) << shift ;
        }
 ...

should be :

 ...
        // calculate tag value w/ long tag format
        for ( int ii = 1; ii < octets.length; ii++ )
        {
            id = (id << 7) | (octets[ii] & LONG_MASK);
        }
 ...

in both functions. 

The test case should also be corrected, as value are create din the revert order in test 
org.apache.asn1.bertestGetTagIdByteArray() :

...
            octets[1] = (byte)(ii & Tag.LONG_MASK);
            octets[2] = (byte)((ii >> 7) & Tag.LONG_MASK);
...

should be :

...
            octets[1] = (byte)((ii >> 7) & Tag.LONG_MASK);
            octets[2] = (byte)(ii & Tag.LONG_MASK);
...

and

...
            octets[1] = (byte)(ii & Tag.LONG_MASK);
            octets[2] = (byte)((ii >> 7) & Tag.LONG_MASK);
            octets[3] = (byte)((ii >> 14) & Tag.LONG_MASK);
...

should be :

...
            octets[1] = (byte)((ii >> 14) & Tag.LONG_MASK);
            octets[2] = (byte)((ii >> 7) & Tag.LONG_MASK);
            octets[3] = (byte)(ii & Tag.LONG_MASK);
...

Function org.apache.asn1.ber.Tag.getTagId(int) seems to works correctly - although not tested.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Mime
View raw message