File tree Expand file tree Collapse file tree 2 files changed +36
-0
lines changed
Expand file tree Collapse file tree 2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -14,3 +14,4 @@ endmacro()
1414
1515FUZZER (fuzz-read-print-write )
1616FUZZER (fuzz-read-write )
17+ FUZZER (fuzz-preview )
Original file line number Diff line number Diff line change 1+ #include < exiv2/exiv2.hpp>
2+
3+ #include < cassert>
4+ #include < iomanip>
5+ #include < iostream>
6+
7+ extern " C" int LLVMFuzzerTestOneInput (const uint8_t * data, size_t size) {
8+ // Invalid files generate a lot of warnings, so switch off logging.
9+ Exiv2::LogMsg::setLevel (Exiv2::LogMsg::mute);
10+
11+ try {
12+ Exiv2::DataBuf data_copy (data, size);
13+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open (data_copy.c_data (), size);
14+ assert (image.get () != 0 );
15+
16+ image->readMetadata ();
17+
18+ Exiv2::PreviewManager pm (*image);
19+ std::ostringstream os;
20+ Exiv2::PreviewPropertiesList list = pm.getPreviewProperties ();
21+ for (const auto & pos : list) {
22+ os << pos.mimeType_ << " \n " ;
23+
24+ if (pos.width_ != 0 && pos.height_ != 0 )
25+ os << pos.width_ << " " << pos.height_ << " " ;
26+
27+ os << pos.size_ << " \n " ;
28+ }
29+
30+ } catch (...) {
31+ // Exiv2 throws an exception if the metadata is invalid.
32+ }
33+
34+ return 0 ;
35+ }
You can’t perform that action at this time.
0 commit comments