[
https://issues.apache.org/jira/browse/DIRSERVER-2408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17868915#comment-17868915
]
Emmanuel Lécharny commented on DIRSERVER-2408:
----------------------------------------------
Added some more fix for invalid attributes.
> Exceptions in EntrySerializer
> -----------------------------
>
> Key: DIRSERVER-2408
> URL: https://issues.apache.org/jira/browse/DIRSERVER-2408
> Project: Directory ApacheDS
> Issue Type: Bug
> Components: jdbm
> Reporter: Ekaterina Zilotina
> Priority: Major
> Attachments:
> ArrayIndexOutOfBoundsException_entrySerializercrash-bb662918c3c5b52aef5bb949285ae5cd46db2900,
> DeserializeFuzzer.java.txt,
> IllegalArgumentException_entrySerializercrash-89989028ed53bb2aa1611da91746de61252b1095,
>
> NegativeArraySizeException_entrySerializercrash-64473e185b8cb9d1a448ac522e160174375941e3,
>
> NegativeArraySizeException_entrySerializercrash-ac848f2d23a9f12ddf250f529c3fe654eef5b233,
>
> NegativeArraySizeException_entrySerializercrash-eeb4c93175ddce8ebc177647324566d4c5e3ca61,
>
> NullPointerException_entrySerializercrash-085a2198d7a7a20a61c7f16fd90ef3129068bb1b,
>
> NullPointerException_entrySerializercrash-60a07478c87366934a3b0dce34f0f2067f84f154,
>
> OutOfMemoryError_entrySerializercrash-1fc0f54909703034301896bca67ba829d81bfa66,
>
> OutOfMemoryError_entrySerializercrash-4bdb2cd90ef530efe10247e208023c6ec2f15d6f,
>
> OutOfMemoryError_entrySerializercrash-c4b87b00b80bf9024e4f693271bf51f02a9f076a,
> dismatch-errorFile-01842911-6276-4fda-88f4-7515b30cdafe,
> dismatch-errorFile-01a9c722-588d-4299-b95a-e79d2d2fe9a6,
> dismatch-errorFile-01dcbb78-1a94-4620-bf4d-115f31f678c1, jazzer_output.txt
>
>
> Class: EntrySerializer
> Method: deserialize()
> I performed fuzz testing of the deserialize() method of EntrySerializer
> object (for example I took ServerEntrySerializerTest class). In result of
> fuzzing tests there are some unhandled exceptions:
> 1. OutOfMemoryError when running with '-Xmx1620m' option while create massive
> with size value from input data (look DEDUP_TOKEN: 3c53e16103f7df69,
> 0e0655117383aa9c, bac12c1dd0658676 in fuzzer_output.txt)
> 2. NegativeArraySizeException in readExternal() method in line
> [184|https://github.com/apache/directory-server/blob/8c9b56bdcc0703b04b8e2dbdc4f045ed5d83a064/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/EntrySerializer.java#L184]
> (DEDUP_TOKEN: c027ed383c214f09 in fuzzer_output.txt) and
> [219|https://github.com/apache/directory-server/blob/8c9b56bdcc0703b04b8e2dbdc4f045ed5d83a064/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/EntrySerializer.java#L219]
> (DEDUP_TOKEN: 52fd84779ea9dc9e, d13ede94b076c4f2 in fuzzer_output.txt).
> Values are using incorrect when create byte[] ([
> here|https://github.com/apache/directory-ldap-api/blob/bc63cabe199905158578dbf4936eb60fcd6ae4b4/ldap/model/src/main/java/org/apache/directory/api/ldap/model/entry/Value.java#L1622]
> and
> [here|https://github.com/apache/directory-ldap-api/blob/bc63cabe199905158578dbf4936eb60fcd6ae4b4/ldap/model/src/main/java/org/apache/directory/api/ldap/model/entry/Value.java#L1643]
> )
> 3. IllegalArgumentException with when add attribute in [line
> 221|https://github.com/apache/directory-server/blob/8c9b56bdcc0703b04b8e2dbdc4f045ed5d83a064/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/EntrySerializer.java#L221]
> (DEDUP_TOKEN: 75318c370e556bae in fuzzer_output.txt).
> 4. NullPointerException in line 184 when calling readExternal() (DEDUP_TOKEN:
> e8c7485e75d40809, 368480f2ec2323a7 in fuzzer_output.txt).
> [SchemaUtils.stripOptions()|https://github.com/apache/directory-ldap-api/blob/bc63cabe199905158578dbf4936eb60fcd6ae4b4/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaUtils.java#L538]
> takes Null string
> 5. ArrayIndexOutOfBoundsException in [line
> 213|https://github.com/apache/directory-server/blob/8c9b56bdcc0703b04b8e2dbdc4f045ed5d83a064/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/EntrySerializer.java#L213]
> (DEDUP_TOKEN: 171eddc8777f746e in fuzzer_output.txt)
> this may not pose a threat to apacheds, but there is no handling of it in
> this area of code. Perhaps should you add another exception types (or base
> Exception) to the deserialize() function signature, or wrap the specified
> methods in try/catch blocks?
> Secondly, my tests compared the result of deserialization into a ServerEntry
> object and serialization into a set of bytes back with the input bytes. Is
> this correct that in some cases there are sets of bytes that did not match
> entry value, but correctly deserializing into ServerEntry object? Important
> to say, that in 60 seconds of working jazzer it was 80k+ executed units and
> found ~10k mismatched input and output bytes (that is strange, imho). Example
> of these input samples, crash samples, fuzz test, jazzer log are below
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]