[ http://issues.apache.org/jira/browse/DIRSNICKERS-103?page=all ] Emmanuel Lecharny closed DIRSNICKERS-103: -----------------------------------------
fixed > Bad encoding of tags number above 127 > ------------------------------------- > > Key: DIRSNICKERS-103 > URL: http://issues.apache.org/jira/browse/DIRSNICKERS-103 > Project: Directory ASN1 > Type: Bug > Components: BER Runtime > Versions: 0.2.0 > Reporter: Emmanuel Lecharny > Assignee: Alan Cabrera > Priority: Minor > Attachments: asn1-ber.diff > > 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 - For more information on JIRA, see: http://www.atlassian.com/software/jira
