/src/systemd/src/fuzz/fuzz-catalog.c
Line | Count | Source |
1 | | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2 | | |
3 | | #include "catalog.h" |
4 | | #include "fd-util.h" |
5 | | #include "fs-util.h" |
6 | | #include "fuzz.h" |
7 | | #include "tmpfile-util.h" |
8 | | |
9 | 1.18k | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
10 | 1.18k | _cleanup_(unlink_tempfilep) char name[] = "/tmp/fuzz-catalog.XXXXXX"; |
11 | 1.18k | _cleanup_close_ int fd = -1; |
12 | 1.18k | _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; |
13 | 1.18k | |
14 | 1.18k | if (!getenv("SYSTEMD_LOG_LEVEL")) |
15 | 1.18k | log_set_max_level(LOG_CRIT); |
16 | 1.18k | |
17 | 1.18k | assert_se(h = hashmap_new(&catalog_hash_ops)); |
18 | 1.18k | |
19 | 1.18k | fd = mkostemp_safe(name); |
20 | 1.18k | assert_se(fd >= 0); |
21 | 1.18k | assert_se(write(fd, data, size) == (ssize_t) size); |
22 | 1.18k | |
23 | 1.18k | (void) catalog_import_file(h, name); |
24 | 1.18k | |
25 | 1.18k | return 0; |
26 | 1.18k | } |