| * Test the decoding of a SearchRequest with a bad sizeLimit
*/
@Test
public void testDecodeSearchRequestGlobalBadSizeLimit()
{
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate( 0x8F );
stream.put( new byte[]
{ 0x30, ( byte ) 0x81,
( byte ) 0x8C, // LDAPMessage ::=SEQUENCE {
0x02,
0x01,
0x01, // messageID MessageID
0x63,
( byte ) 0x81,
( byte ) 0x86, // CHOICE { ...,
// searchRequest SearchRequest, ...
// SearchRequest ::= APPLICATION[3] SEQUENCE {
0x04,
0x1F, // baseObject LDAPDN,
'u',
'i',
'd',
':',
'a',
'k',
'a',
'r',
'a',
's',
'u',
'l',
'u',
',',
'd',
'c',
'=',
'e',
'x',
'a',
'm',
'p',
'l',
'e',
',',
'd',
'c',
'=',
'c',
'o',
'm',
0x0A,
0x01,
0x01, // scope ENUMERATED {
// baseObject (0),
// singleLevel (1),
// wholeSubtree (2) },
0x0A,
0x01,
0x03, // derefAliases ENUMERATED {
// neverDerefAliases (0),
// derefInSearching (1),
// derefFindingBaseObj (2),
// derefAlways (3) },
0x02,
0x01,
( byte ) 0xFF, // sizeLimit INTEGER (0 .. maxInt), (1000)
0x02,
0x02,
0x03,
( byte ) 0xE8, // timeLimit INTEGER (0 .. maxInt), (1000)
0x01,
0x01,
( byte ) 0xFF, // typesOnly BOOLEAN, (TRUE)
// filter Filter,
( byte ) 0xA0,
0x3C, // Filter ::= CHOICE {
// and [0] SET OF Filter,
( byte ) 0xA1,
0x24, // or [1] SET of Filter,
( byte ) 0xA3,
0x12, // equalityMatch [3]
// Assertion,
// Assertion ::= SEQUENCE {
// attributeDesc AttributeDescription (LDAPString),
0x04,
0x0B,
'o',
'b',
'j',
'e',
'c',
't',
'c',
'l',
'a',
's',
's',
// assertionValue AssertionValue (OCTET STRING) }
0x04,
0x03,
't',
'o',
'p',
( byte ) 0xA3,
0x0E, // equalityMatch [3] Assertion,
// Assertion ::= SEQUENCE {
0x04,
0x02,
'o',
'u', // attributeDesc AttributeDescription (LDAPString),
// assertionValue AssertionValue (OCTET STRING) }
0x04,
0x08,
'c',
'o',
'n',
't',
'a',
'c',
't',
's',
( byte ) 0xA2,
0x14, // not [2] Filter,
( byte ) 0xA3,
0x12, // equalityMatch [3] Assertion,
// Assertion ::= SEQUENCE {
// attributeDesc AttributeDescription (LDAPString),
0x04,
0x0B,
'o',
'b',
'j',
'e',
'c',
't',
'c',
'l',
'a',
's',
's',
// assertionValue AssertionValue (OCTET STRING) }
0x04,
0x03,
't',
't',
't',
// attributes AttributeDescriptionList }
0x30,
0x15, // AttributeDescriptionList ::= SEQUENCE OF
// AttributeDescription
0x04,
0x05,
'a',
't',
't',
'r',
'0', // AttributeDescription ::= LDAPString
0x04,
0x05,
'a',
't',
't',
'r',
'1', // AttributeDescription ::= LDAPString
0x04,
0x05,
'a',
't',
't',
'r',
'2' // AttributeDescription ::= LDAPString
} );
stream.flip();
// Allocate a LdapMessage Container
LdapMessageContainer<SearchRequestDecorator> ldapMessageContainer =
new LdapMessageContainer<SearchRequestDecorator>( codec );
try
{
ldapDecoder.decode( stream, ldapMessageContainer );
}
catch ( DecoderException de )
{
assertTrue( true );
return;
|