fuzz-udev-rules: -ENOBUFS should be accepted too

In udev_rules_load(), add a debug message. Otherwise there'd be no indication
that parsing was aborted.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2020-06-24 13:26:05 +02:00
parent 85fbebe61a
commit f23810da20
3 changed files with 12 additions and 3 deletions

View File

@ -13,6 +13,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
_cleanup_(udev_rules_freep) UdevRules *rules = NULL;
_cleanup_fclose_ FILE *f = NULL;
_cleanup_(unlink_tempfilep) char filename[] = "/tmp/fuzz-udev-rules.XXXXXX";
int r;
if (!getenv("SYSTEMD_LOG_LEVEL")) {
log_set_max_level_realm(LOG_REALM_UDEV, LOG_CRIT);
@ -25,7 +26,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
fflush(f);
assert_se(rules = udev_rules_new(RESOLVE_NAME_EARLY));
assert_se(udev_rules_parse_file(rules, filename) == 0);
r = udev_rules_parse_file(rules, filename);
log_info_errno(r, "Parsing %s: %m", filename);
assert_se(IN_SET(r,
0, /* OK */
-ENOBUFS /* line length exceeded */));
return 0;
}

View File

@ -1308,8 +1308,11 @@ int udev_rules_load(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing
if (r < 0)
return log_debug_errno(r, "Failed to enumerate rules files: %m");
STRV_FOREACH(f, files)
(void) udev_rules_parse_file(rules, *f);
STRV_FOREACH(f, files) {
r = udev_rules_parse_file(rules, *f);
if (r < 0)
log_debug_errno(r, "Failed to read rules file %s, ignoring: %m", *f);
}
*ret_rules = TAKE_PTR(rules);
return 0;

File diff suppressed because one or more lines are too long