]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/fuzz/fuzz-udev-rules.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
9 #include "tmpfile-util.h"
10 #include "udev-rules.h"
12 int LLVMFuzzerTestOneInput(const uint8_t *data
, size_t size
) {
13 _cleanup_(udev_rules_freep
) UdevRules
*rules
= NULL
;
14 _cleanup_fclose_
FILE *f
= NULL
;
15 _cleanup_(unlink_tempfilep
) char filename
[] = "/tmp/fuzz-udev-rules.XXXXXX";
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
);
23 assert_se(fmkostemp_safe(filename
, "r+", &f
) == 0);
25 assert_se(fwrite(data
, size
, 1, f
) == 1);
28 assert_se(rules
= udev_rules_new(RESOLVE_NAME_EARLY
));
29 r
= udev_rules_parse_file(rules
, filename
);
30 log_info_errno(r
, "Parsing %s: %m", filename
);
33 -ENOBUFS
/* line length exceeded */));