]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
2e646cbe | 2 | |
db3b8d5d | 3 | #include <stdio.h> |
2e646cbe EV |
4 | |
5 | #include "fd-util.h" | |
6 | #include "fs-util.h" | |
7 | #include "fuzz.h" | |
2e646cbe | 8 | #include "tests.h" |
db3b8d5d | 9 | #include "tmpfile-util.h" |
25de7aa7 | 10 | #include "udev-rules.h" |
2e646cbe | 11 | |
2e646cbe | 12 | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
9a07157d | 13 | _cleanup_(udev_rules_freep) UdevRules *rules = NULL; |
db3b8d5d ZJS |
14 | _cleanup_fclose_ FILE *f = NULL; |
15 | _cleanup_(unlink_tempfilep) char filename[] = "/tmp/fuzz-udev-rules.XXXXXX"; | |
f23810da | 16 | int r; |
8e96f161 | 17 | |
2e646cbe EV |
18 | if (!getenv("SYSTEMD_LOG_LEVEL")) { |
19 | log_set_max_level_realm(LOG_REALM_UDEV, LOG_CRIT); | |
20 | log_set_max_level_realm(LOG_REALM_SYSTEMD, LOG_CRIT); | |
21 | } | |
22 | ||
db3b8d5d | 23 | assert_se(fmkostemp_safe(filename, "r+", &f) == 0); |
2e646cbe EV |
24 | if (size != 0) |
25 | assert_se(fwrite(data, size, 1, f) == 1); | |
db3b8d5d | 26 | fflush(f); |
2e646cbe | 27 | |
db3b8d5d | 28 | assert_se(rules = udev_rules_new(RESOLVE_NAME_EARLY)); |
f23810da ZJS |
29 | r = udev_rules_parse_file(rules, filename); |
30 | log_info_errno(r, "Parsing %s: %m", filename); | |
31 | assert_se(IN_SET(r, | |
32 | 0, /* OK */ | |
33 | -ENOBUFS /* line length exceeded */)); | |
2e646cbe EV |
34 | |
35 | return 0; | |
36 | } |