Fuzz introspector: fuzz_mms_decode
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
0 11 1 :

['MmsValue_delete']

0 11 MmsValue_decodeMmsDataRecursive call site: 00019 /src/libiec61850/src/mms/iso_mms/server/mms_access_result.c:224
0 2 1 :

['Memory_free']

0 2 Asn1PrimitiveValue_create call site: 00038 /src/libiec61850/src/mms/asn1/asn1_ber_primitive_value.c:39
0 2 1 :

['Memory_free']

0 2 MmsValue_newBitString call site: 00030 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:369
0 2 1 :

['Memory_free']

0 2 MmsValue_newInteger call site: 00040 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:1413
0 2 1 :

['Memory_free']

0 2 MmsValue_newUnsigned call site: 00046 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:1435
0 2 1 :

['Memory_free']

0 2 MmsValue_createEmptyArray call site: 00014 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:2052
0 0 None 0 11 MmsValue_decodeMmsDataRecursive call site: 00003 /src/libiec61850/src/mms/iso_mms/server/mms_access_result.c:167
0 0 None 0 11 MmsValue_decodeMmsDataRecursive call site: 00018 /src/libiec61850/src/mms/iso_mms/server/mms_access_result.c:209
0 0 None 0 0 MmsValue_newDataAccessError call site: 00023 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:348
0 0 None 0 0 MmsValue_newBitString call site: 00028 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:362
0 0 None 0 0 MmsValue_delete call site: 00071 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:1315
0 0 None 0 0 MmsValue_newUtcTime call site: 00069 /src/libiec61850/src/mms/iso_mms/common/mms_value.c:1966

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 MmsValue_decodeMmsData [function] [call site] 00001
2 MmsValue_decodeMmsDataMaxRecursion [function] [call site] 00002
3 MmsValue_decodeMmsDataRecursive [function] [call site] 00003
4 BerDecoder_decodeLength [function] [call site] 00004
5 BerDecoder_decodeLengthRecursive [function] [call site] 00005
6 getIndefiniteLength [function] [call site] 00006
7 BerDecoder_decodeLengthRecursive [function] [call site] 00007
4 getNumberOfElements [function] [call site] 00008
5 BerDecoder_decodeLength [function] [call site] 00009
4 MmsValue_createEmptyArray [function] [call site] 00010
5 Memory_calloc [function] [call site] 00011
6 calloc [call site] 00012
6 noMemoryAvailableHandler [function] [call site] 00013
5 Memory_calloc [function] [call site] 00014
5 Memory_free [function] [call site] 00015
4 MmsValue_createEmptyStructure [function] [call site] 00016
5 MmsValue_createEmptyArray [function] [call site] 00017
4 BerDecoder_decodeLength [function] [call site] 00018
4 MmsValue_decodeMmsDataRecursive [function] [call site] 00019
5 MmsValue_setElement [function] [call site] 00020
5 BerDecoder_decodeUint32 [function] [call site] 00021
5 MmsValue_newDataAccessError [function] [call site] 00022
6 Memory_calloc [function] [call site] 00023
5 BerDecoder_decodeBoolean [function] [call site] 00024
5 MmsValue_newBoolean [function] [call site] 00025
6 Memory_calloc [function] [call site] 00026
5 MmsValue_newBitString [function] [call site] 00027
6 Memory_calloc [function] [call site] 00028
6 bitStringByteSize [function] [call site] 00029
6 Memory_calloc [function] [call site] 00030
6 Memory_free [function] [call site] 00031
5 MmsValue_newInteger [function] [call site] 00032
6 Memory_calloc [function] [call site] 00033
6 BerInteger_createInt32 [function] [call site] 00034
7 Asn1PrimitiveValue_create [function] [call site] 00035
8 Memory_malloc [function] [call site] 00036
9 noMemoryAvailableHandler [function] [call site] 00037
8 Memory_calloc [function] [call site] 00038
8 Memory_free [function] [call site] 00039
6 BerInteger_createInt64 [function] [call site] 00040
7 Asn1PrimitiveValue_create [function] [call site] 00041
6 Memory_free [function] [call site] 00042
5 MmsValue_newUnsigned [function] [call site] 00043
6 Memory_calloc [function] [call site] 00044
6 BerInteger_createInt32 [function] [call site] 00045
6 BerInteger_createInt64 [function] [call site] 00046
6 Memory_free [function] [call site] 00047
5 BerDecoder_decodeDouble [function] [call site] 00048
5 MmsValue_newDouble [function] [call site] 00049
6 Memory_calloc [function] [call site] 00050
5 BerDecoder_decodeFloat [function] [call site] 00051
5 MmsValue_newFloat [function] [call site] 00052
6 Memory_malloc [function] [call site] 00053
5 MmsValue_newOctetString [function] [call site] 00054
6 Memory_calloc [function] [call site] 00055
6 Memory_calloc [function] [call site] 00056
6 Memory_free [function] [call site] 00057
5 MmsValue_newVisibleStringFromByteArray [function] [call site] 00058
6 MmsValue_newStringFromByteArray [function] [call site] 00059
7 Memory_calloc [function] [call site] 00060
7 StringUtils_createStringFromBuffer [function] [call site] 00061
8 Memory_malloc [function] [call site] 00062
7 Memory_free [function] [call site] 00063
5 MmsValue_newBinaryTime [function] [call site] 00064
6 Memory_calloc [function] [call site] 00065
5 MmsValue_newBinaryTime [function] [call site] 00066
5 MmsValue_newVisibleStringFromByteArray [function] [call site] 00067
5 MmsValue_newUtcTime [function] [call site] 00068
6 Memory_calloc [function] [call site] 00069
5 MmsValue_setUtcTimeByBuffer [function] [call site] 00070
5 MmsValue_delete [function] [call site] 00071
6 Asn1PrimitiveValue_destroy [function] [call site] 00072
7 Memory_free [function] [call site] 00073
7 Memory_free [function] [call site] 00074
6 Memory_free [function] [call site] 00075
6 Memory_free [function] [call site] 00076
6 Memory_free [function] [call site] 00077
6 MmsValue_delete [function] [call site] 00078
7 Memory_free [function] [call site] 00079
7 Memory_free [function] [call site] 00080
1 MmsValue_delete [function] [call site] 00081