Fuzz introspector: /src/librawspeed/fuzz/librawspeed/decompressors/HuffmanTable/Dual.cpp
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
318 318 1 :

['rawspeed::ArwDecoder::decodeSRF(rawspeed::TiffIFD const*)']

318 318 rawspeed::ArwDecoder::decodeRawInternal() call site /src/librawspeed/src/librawspeed/decoders/ArwDecoder.cpp:132
175 175 1 :

['void rawspeed::Cr2Decompressor ::decompressN_X_Y<3, 2, 1>()']

175 175 rawspeed::Cr2Decompressor ::decompress() call site /src/librawspeed/src/librawspeed/decompressors/Cr2DecompressorImpl.h:320
162 162 1 :

['void rawspeed::Cr2Decompressor ::decompressN_X_Y<3, 2, 2>()']

162 162 rawspeed::Cr2Decompressor ::decompress() call site /src/librawspeed/src/librawspeed/decompressors/Cr2DecompressorImpl.h:316
98 98 1 :

['void rawspeed::UncompressedDecompressor::decodePackedInt > >(rawspeed::iPoint2D const&, rawspeed::iPoint2D const&, unsigned int, int, int, int) const']

98 98 rawspeed::UncompressedDecompressor::readUncompressedRaw(rawspeed::iPoint2Dconst&,rawspeed::iPoint2Dconst&,int,int,rawspeed::BitOrder) call site /src/librawspeed/src/librawspeed/decompressors/UncompressedDecompressor.cpp:216
57 57 1 :

['rawspeed::CiffEntry::getByte(unsigned int) const']

57 57 rawspeed::CiffEntry::getU32(unsignedint)const call site /src/librawspeed/src/librawspeed/tiff/CiffEntry.cpp:117
56 56 1 :

['void rawspeed::UncompressedDecompressor::decode8BitRaw (unsigned int, unsigned int)']

110 252 rawspeed::DcsDecoder::decodeRawInternal() call site /src/librawspeed/src/librawspeed/decoders/DcsDecoder.cpp:72
56 56 1 :

['void rawspeed::UncompressedDecompressor::decodeRawUnpacked<14, (rawspeed::Endianness)48879>(unsigned int, unsigned int)']

110 144 rawspeed::ArwDecoder::DecodeUncompressed(rawspeed::TiffIFDconst*)const call site /src/librawspeed/src/librawspeed/decoders/ArwDecoder.cpp:258
38 38 1 :

['void rawspeed::DngOpcodes::PixelOpcode::applyOP ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1}>(rawspeed::RawImage const&, rawspeed::DngOpcodes::OffsetPerRowOrCol ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1})']

38 38 rawspeed::DngOpcodes::OffsetPerRowOrCol ::apply(rawspeed::RawImageconst&) call site /src/librawspeed/src/librawspeed/common/DngOpcodes.cpp:526
38 38 1 :

['void rawspeed::DngOpcodes::PixelOpcode::applyOP ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1}>(rawspeed::RawImage const&, rawspeed::DngOpcodes::OffsetPerRowOrCol ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1})']

38 38 rawspeed::DngOpcodes::OffsetPerRowOrCol ::apply(rawspeed::RawImageconst&) call site /src/librawspeed/src/librawspeed/common/DngOpcodes.cpp:526
38 38 1 :

['void rawspeed::DngOpcodes::PixelOpcode::applyOP ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1}>(rawspeed::RawImage const&, rawspeed::DngOpcodes::ScalePerRowOrCol ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1})']

38 38 rawspeed::DngOpcodes::ScalePerRowOrCol ::apply(rawspeed::RawImageconst&) call site /src/librawspeed/src/librawspeed/common/DngOpcodes.cpp:565
38 38 1 :

['void rawspeed::DngOpcodes::PixelOpcode::applyOP ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1}>(rawspeed::RawImage const&, rawspeed::DngOpcodes::ScalePerRowOrCol ::apply(rawspeed::RawImage const&)::{lambda(unsigned int, unsigned int, float)#1})']

38 38 rawspeed::DngOpcodes::ScalePerRowOrCol ::apply(rawspeed::RawImageconst&) call site /src/librawspeed/src/librawspeed/common/DngOpcodes.cpp:565
20 174 3 :

['rawspeed::AbstractSamsungDecompressor::~AbstractSamsungDecompressor()', 'rawspeed::SamsungV1Decompressor::SamsungV1Decompressor(rawspeed::RawImage const&, rawspeed::ByteStream const&, int)', 'rawspeed::SamsungV1Decompressor::decompress() const']

20 646 rawspeed::SrwDecoder::decodeRawInternal() call site /src/librawspeed/src/librawspeed/decoders/SrwDecoder.cpp:107

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __assert_fail [call site] 00001
1 rawspeed::Buffer::Buffer(unsigned char const*, unsigned int) [function] [call site] 00002
2 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00003
2 __assert_fail [call site] 00004
1 rawspeed::DataBuffer::DataBuffer(rawspeed::Buffer const&, rawspeed::Endianness) [function] [call site] 00005
2 rawspeed::Buffer::Buffer(rawspeed::Buffer const&) [function] [call site] 00006
3 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00007
3 __assert_fail [call site] 00008
1 rawspeed::ByteStream::ByteStream(rawspeed::DataBuffer const&) [function] [call site] 00009
2 rawspeed::DataBuffer::DataBuffer(rawspeed::DataBuffer const&) [function] [call site] 00010
3 rawspeed::Buffer::Buffer(rawspeed::Buffer const&) [function] [call site] 00011
1 rawspeed::ByteStream::ByteStream(rawspeed::DataBuffer const&) [function] [call site] 00012
1 rawspeed::HuffmanTableTree::HuffmanTableTree() [function] [call site] 00013
2 rawspeed::AbstractHuffmanTable::AbstractHuffmanTable() [function] [call site] 00014
2 rawspeed::BinaryHuffmanTree ::BinaryHuffmanTree() [function] [call site] 00015
1 rawspeed::HuffmanTableVector::HuffmanTableVector() [function] [call site] 00016
2 rawspeed::AbstractHuffmanTable::AbstractHuffmanTable() [function] [call site] 00017
1 rawspeed::HuffmanTableTree createHuffmanTable (rawspeed::ByteStream&) [function] [call site] 00018
2 rawspeed::HuffmanTableTree::HuffmanTableTree() [function] [call site] 00019
2 rawspeed::ByteStream::getBuffer(unsigned int) [function] [call site] 00020
3 rawspeed::Buffer::getSubView(unsigned int, unsigned int) const [function] [call site] 00021
4 rawspeed::Buffer::isValid(unsigned int, unsigned int) const [function] [call site] 00022
4 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00023
5 vsnprintf [call site] 00024
5 rawspeed::writeLog(rawspeed::DEBUG_PRIO, char const*, ...) [function] [call site] 00025
5 __cxa_allocate_exception [call site] 00026
5 rawspeed::IOException::RawspeedException(char const*) [function] [call site] 00027
6 rawspeed::RawspeedException::RawspeedException(char const*) [function] [call site] 00028
7 std::runtime_error::runtime_error(char const*) [call site] 00029
7 rawspeed::RawspeedException::log(char const*) [function] [call site] 00030
8 rawspeed::writeLog(rawspeed::DEBUG_PRIO, char const*, ...) [function] [call site] 00031
7 std::runtime_error::~runtime_error() [call site] 00032
4 rawspeed::Buffer::getData(unsigned int, unsigned int) const [function] [call site] 00033
5 rawspeed::Buffer::isValid(unsigned int, unsigned int) const [function] [call site] 00034
5 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00035
5 __assert_fail [call site] 00036
5 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00037
5 __assert_fail [call site] 00038
2 rawspeed::AbstractHuffmanTable::setNCodesPerLength(rawspeed::Buffer const&) [function] [call site] 00039
3 rawspeed::Buffer::getSize() const [function] [call site] 00040
4 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00041
4 __assert_fail [call site] 00042
3 __assert_fail [call site] 00043
3 rawspeed::Buffer::begin() const [function] [call site] 00044
4 __assert_fail [call site] 00045
4 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00046
4 __assert_fail [call site] 00047
3 __assert_fail [call site] 00048
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00049
4 rawspeed::RawDecoderException::RawspeedException(char const*) [function] [call site] 00050
3 __assert_fail [call site] 00051
3 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00052
3 __assert_fail [call site] 00053
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00054
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00055
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00056
2 rawspeed::Buffer::~Buffer() [function] [call site] 00057
3 rawspeed::alignedFreeConstPtr(void const*) [function] [call site] 00058
4 rawspeed::alignedFree(void*) [function] [call site] 00059
3 __clang_call_terminate [call site] 00060
4 __cxa_begin_catch [call site] 00061
2 rawspeed::ByteStream::getBuffer(unsigned int) [function] [call site] 00062
2 rawspeed::AbstractHuffmanTable::setCodeValues(rawspeed::Buffer const&) [function] [call site] 00063
3 rawspeed::Buffer::getSize() const [function] [call site] 00064
3 __assert_fail [call site] 00065
3 rawspeed::Buffer::getSize() const [function] [call site] 00066
3 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00067
3 __assert_fail [call site] 00068
3 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00069
3 rawspeed::Buffer::begin() const [function] [call site] 00070
3 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00071
3 __assert_fail [call site] 00072
2 rawspeed::Buffer::~Buffer() [function] [call site] 00073
2 rawspeed::ByteStream::getByte() [function] [call site] 00074
3 __assert_fail [call site] 00075
3 rawspeed::ByteStream::check(unsigned int) const [function] [call site] 00076
4 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00077
4 rawspeed::ASan::RegionIsPoisoned(void const volatile*, unsigned long) [function] [call site] 00078
4 __assert_fail [call site] 00079
2 rawspeed::HuffmanTableTree::setup(bool, bool) [function] [call site] 00080
3 rawspeed::AbstractHuffmanTable::setup(bool, bool) [function] [call site] 00081
4 rawspeed::AbstractHuffmanTable::verifyCodeSymbolsAreValidDiffLenghts() const [function] [call site] 00082
5 rawspeed::AbstractHuffmanTable::maxCodePlusDiffLength() const [function] [call site] 00083
5 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00084
5 __assert_fail [call site] 00085
3 rawspeed::BinaryHuffmanTree ::getAllVacantNodesAtDepth(int) [function] [call site] 00086
4 __assert_fail [call site] 00087
4 rawspeed::BinaryHuffmanTree ::getAllBranchesOfDepth(int) [function] [call site] 00088
5 __assert_fail [call site] 00089
5 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00090
6 __assert_fail [call site] 00091
5 rawspeed::BinaryHuffmanTree ::getAllBranchesOfDepth(int) [function] [call site] 00092
6 __assert_fail [call site] 00093
6 bool rawspeed::BinaryHuffmanTree ::Branch::forEachNode ::getAllBranchesOfDepth(int)::{lambda(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*)#1}>(rawspeed::BinaryHuffmanTree ::getAllBranchesOfDepth(int)::{lambda(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*)#1}) [function] [call site] 00094
7 rawspeed::BinaryHuffmanTree ::getAllBranchesOfDepth(int)::{lambda(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*)#1}::operator()(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*) const [function] [call site] 00095
8 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00096
4 __assert_fail [call site] 00097
4 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00098
4 bool rawspeed::BinaryHuffmanTree ::Branch::forEachNode ::getAllVacantNodesAtDepth(int)::{lambda(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*)#1}>(rawspeed::BinaryHuffmanTree ::getAllVacantNodesAtDepth(int)::{lambda(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*)#1}) [function] [call site] 00099
4 __assert_fail [call site] 00100
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00101
3 __assert_fail [call site] 00102
3 rawspeed::BinaryHuffmanTree ::pruneLeaflessBranches() [function] [call site] 00103
4 rawspeed::BinaryHuffmanTree ::Branch::pruneLeaflessBranches(std::__1::unique_ptr ::Node, std::__1::default_delete ::Node> >*) [function] [call site] 00104
5 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00105
2 rawspeed::HuffmanTableTree::~HuffmanTableTree() [function] [call site] 00106
1 rawspeed::HuffmanTableTree::operator=(rawspeed::HuffmanTableTree&&) [function] [call site] 00107
1 __cxa_begin_catch [call site] 00108
1 __cxa_end_catch [call site] 00109
1 rawspeed::HuffmanTableVector createHuffmanTable (rawspeed::ByteStream&) [function] [call site] 00110
2 rawspeed::HuffmanTableVector::HuffmanTableVector() [function] [call site] 00111
2 rawspeed::HuffmanTableVector::setup(bool, bool) [function] [call site] 00112
3 rawspeed::AbstractHuffmanTable::generateCodeSymbols() const [function] [call site] 00113
4 __assert_fail [call site] 00114
4 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00115
4 __assert_fail [call site] 00116
4 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00117
4 __assert_fail [call site] 00118
4 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00119
4 __assert_fail [call site] 00120
4 __assert_fail [call site] 00121
4 rawspeed::AbstractHuffmanTable::VerifyCodeSymbols(std::__1::vector > const&) [function] [call site] 00122
5 __assert_fail [call site] 00123
5 rawspeed::AbstractHuffmanTable::CodeSymbol::HaveCommonPrefix(rawspeed::AbstractHuffmanTable::CodeSymbol const&, rawspeed::AbstractHuffmanTable::CodeSymbol const&) [function] [call site] 00124
6 __assert_fail [call site] 00125
6 _ZN8rawspeed15extractHighBitsItEET_S1_jjPNSt3__19enable_ifIXsr3stdE13is_unsigned_vIS1_EEvE4typeE [function] [call site] 00126
7 unsigned int rawspeed::bitwidth (unsigned short) [function] [call site] 00127
7 __assert_fail [call site] 00128
7 unsigned int rawspeed::bitwidth (unsigned short) [function] [call site] 00129
7 __assert_fail [call site] 00130
5 __assert_fail [call site] 00131
3 rawspeed::AbstractHuffmanTable::maxCodesCount() const [function] [call site] 00132
3 __assert_fail [call site] 00133
2 rawspeed::HuffmanTableVector::~HuffmanTableVector() [function] [call site] 00134
1 rawspeed::HuffmanTableVector::operator=(rawspeed::HuffmanTableVector&&) [function] [call site] 00135
1 __cxa_begin_catch [call site] 00136
1 __cxa_end_catch [call site] 00137
1 __assert_fail [call site] 00138
1 rawspeed::ByteStream::getPosition() const [function] [call site] 00139
2 __assert_fail [call site] 00140
2 rawspeed::ByteStream::check(unsigned int) const [function] [call site] 00141
1 __assert_fail [call site] 00142
1 rawspeed::ByteStream::getPosition() const [function] [call site] 00143
1 __assert_fail [call site] 00144
1 rawspeed::BitStream >::BitStream(rawspeed::ByteStream const&) [function] [call site] 00145
2 rawspeed::ByteStream::getPosition() const [function] [call site] 00146
2 rawspeed::Buffer::getSubView(unsigned int, unsigned int) const [function] [call site] 00147
2 rawspeed::BitStream >::BitStream(rawspeed::Buffer const&) [function] [call site] 00148
3 rawspeed::BitStreamCacheRightInLeftOut::BitStreamCacheRightInLeftOut() [function] [call site] 00149
4 rawspeed::BitStreamCacheBase::BitStreamCacheBase() [function] [call site] 00150
1 rawspeed::BitStream >::BitStream(rawspeed::ByteStream const&) [function] [call site] 00151
1 int rawspeed::HuffmanTableTree::decode >, false>(rawspeed::BitStream >&) const [function] [call site] 00152
2 rawspeed::BitStream >::fill(unsigned int) [function] [call site] 00153
3 __assert_fail [call site] 00154
3 rawspeed::BitStreamForwardSequentialReplenisher ::getInput() [function] [call site] 00155
4 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00156
3 rawspeed::BitStream >::fillCache(unsigned char const*) [function] [call site] 00157
4 rawspeed::BitStreamCacheRightInLeftOut::push(unsigned long, unsigned int) [function] [call site] 00158
5 __assert_fail [call site] 00159
4 unsigned int rawspeed::getBE (void const*) [function] [call site] 00160
5 rawspeed::getHostEndianness() [function] [call site] 00161
4 rawspeed::BitStreamCacheRightInLeftOut::push(unsigned long, unsigned int) [function] [call site] 00162
4 rawspeed::BitStream >::getRemainingSize() const [function] [call site] 00163
5 rawspeed::BitStreamForwardSequentialReplenisher ::getRemainingSize() const [function] [call site] 00164
6 rawspeed::BitStreamForwardSequentialReplenisher ::getPos() const [function] [call site] 00165
2 std::__1::pair rawspeed::HuffmanTableTree::readSymbol > >(rawspeed::BitStream >&) const [function] [call site] 00166
3 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00167
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00168
3 rawspeed::BinaryHuffmanTree ::Node::getAsBranch() [function] [call site] 00169
3 rawspeed::BinaryHuffmanTree ::Node::getAsLeaf() [function] [call site] 00170
4 __assert_fail [call site] 00171
2 int rawspeed::AbstractHuffmanTable::processSymbol >, false>(rawspeed::BitStream >&, rawspeed::AbstractHuffmanTable::CodeSymbol, int) const [function] [call site] 00172
3 __assert_fail [call site] 00173
1 __cxa_begin_catch [call site] 00174
1 __cxa_rethrow [call site] 00175
1 __cxa_begin_catch [call site] 00176
1 int rawspeed::HuffmanTableVector::decode >, false>(rawspeed::BitStream >&) const [function] [call site] 00177
2 __assert_fail [call site] 00178
2 std::__1::pair rawspeed::HuffmanTableVector::readSymbol > >(rawspeed::BitStream >&) const [function] [call site] 00179
3 rawspeed::BitStream >::getBitsNoFill(unsigned int) [function] [call site] 00180
4 rawspeed::BitStream >::peekBitsNoFill(unsigned int) [function] [call site] 00181
5 __assert_fail [call site] 00182
5 __assert_fail [call site] 00183
5 rawspeed::BitStreamCacheRightInLeftOut::peek(unsigned int) const [function] [call site] 00184
6 _ZN8rawspeed15extractHighBitsImEET_S1_jjPNSt3__19enable_ifIXsr3stdE13is_unsigned_vIS1_EEvE4typeE [function] [call site] 00185
4 rawspeed::BitStream >::skipBitsNoFill(unsigned int) [function] [call site] 00186
5 __assert_fail [call site] 00187
5 rawspeed::BitStreamCacheRightInLeftOut::skip(unsigned int) [function] [call site] 00188
3 rawspeed::operator==(rawspeed::AbstractHuffmanTable::CodeSymbol const&, rawspeed::AbstractHuffmanTable::CodeSymbol const&) [function] [call site] 00189
3 rawspeed::AbstractHuffmanTable::CodeSymbol::HaveCommonPrefix(rawspeed::AbstractHuffmanTable::CodeSymbol const&, rawspeed::AbstractHuffmanTable::CodeSymbol const&) [function] [call site] 00190
3 void rawspeed::ThrowException (char const*, ...) [function] [call site] 00191
2 int rawspeed::AbstractHuffmanTable::processSymbol >, false>(rawspeed::BitStream >&, rawspeed::AbstractHuffmanTable::CodeSymbol, int) const [function] [call site] 00192
1 __cxa_begin_catch [call site] 00193
1 __cxa_begin_catch [call site] 00194
1 __cxa_end_catch [call site] 00195
1 __assert_fail [call site] 00196
1 __assert_fail [call site] 00197
1 rawspeed::HuffmanTableVector::~HuffmanTableVector() [function] [call site] 00198
1 rawspeed::HuffmanTableTree::~HuffmanTableTree() [function] [call site] 00199
1 rawspeed::Buffer::~Buffer() [function] [call site] 00200
1 __cxa_begin_catch [call site] 00201
1 __cxa_end_catch [call site] 00202