/src/exiv2/fuzz/fuzz-read-write.cpp
Line | Count | Source |
1 | | #include <exiv2/exiv2.hpp> |
2 | | |
3 | | #include <cassert> |
4 | | #include <iomanip> |
5 | | #include <iostream> |
6 | | |
7 | 18.5k | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
8 | | // Invalid files generate a lot of warnings, so switch off logging. |
9 | 18.5k | Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); |
10 | | |
11 | 18.5k | Exiv2::XmpParser::initialize(); |
12 | 18.5k | ::atexit(Exiv2::XmpParser::terminate); |
13 | | |
14 | 18.5k | try { |
15 | 18.5k | Exiv2::DataBuf data_copy(data, size); |
16 | 18.5k | Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(data_copy.c_data(), size); |
17 | 18.5k | assert(image.get() != 0); |
18 | | |
19 | 18.5k | image->readMetadata(); |
20 | 18.5k | image->writeMetadata(); |
21 | | |
22 | 18.5k | } catch (...) { |
23 | | // Exiv2 throws an exception if the metadata is invalid. |
24 | 10.1k | } |
25 | | |
26 | 18.5k | return 0; |
27 | 18.5k | } |