blob: 841c0b62c3b1fb7462aea62bb03eaf72f104ddb3 [file] [log] [blame]
Richard Hughes01a30aa2021-01-13 18:39:19 +00001/*
2 * Copyright (C) 2020 Richard Hughes <richard@hughsie.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.1+
5 */
6
7#include <glib.h>
8
9__attribute__((weak)) extern int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size);
10__attribute__((weak)) extern int LLVMFuzzerInitialize(int *argc, char ***argv);
11
12int
13main (int argc, char **argv)
14{
15 g_assert (LLVMFuzzerTestOneInput != NULL);
16 if (LLVMFuzzerInitialize != NULL)
17 LLVMFuzzerInitialize (&argc, &argv);
18 for (int i = 1; i < argc; i++) {
19 gsize bufsz = 0;
20 g_autofree gchar *buf = NULL;
21 g_autoptr(GError) error = NULL;
22 g_printerr ("Running: %s\n", argv[i]);
23 if (!g_file_get_contents (argv[i], &buf, &bufsz, &error)) {
24 g_printerr ("Failed to load: %s\n", error->message);
25 continue;
26 }
27 LLVMFuzzerTestOneInput ((const guint8 *)buf, bufsz);
28 g_printerr ("Done\n");
29 }
30}