aboutsummaryrefslogtreecommitdiff
path: root/projects/libexif/exif_loader_fuzzer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'projects/libexif/exif_loader_fuzzer.cc')
-rw-r--r--projects/libexif/exif_loader_fuzzer.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/projects/libexif/exif_loader_fuzzer.cc b/projects/libexif/exif_loader_fuzzer.cc
index 7c32c9c51..98365b7b5 100644
--- a/projects/libexif/exif_loader_fuzzer.cc
+++ b/projects/libexif/exif_loader_fuzzer.cc
@@ -12,6 +12,33 @@ void data_func(ExifContent *content, void *user_data) {
exif_content_foreach_entry(content, content_func, NULL);
}
+static void
+test_exif_data (ExifData *d) {
+ unsigned int i, c;
+ char v[1024], *p;
+ ExifMnoteData *md;
+
+ md = exif_data_get_mnote_data (d);
+ if (!md) {
+ return;
+ }
+
+ exif_mnote_data_ref (md);
+ exif_mnote_data_unref (md);
+
+ c = exif_mnote_data_count (md);
+ for (i = 0; i < c; i++) {
+ const char *name = exif_mnote_data_get_name (md, i);
+ if (!name) {
+ break;
+ }
+ exif_mnote_data_get_title (md, i);
+ exif_mnote_data_get_description (md, i);
+ exif_mnote_data_get_value (md, i, v, sizeof (v));
+ }
+}
+
+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ExifLoader *loader = exif_loader_new();
ExifData *exif_data;
@@ -25,6 +52,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
return 0;
}
exif_data_foreach_content(exif_data, data_func, NULL);
+ test_exif_data (exif_data);
exif_loader_unref(loader);
exif_data_unref(exif_data);
return 0;