mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 01:55:22 +03:00
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:
parent
85fbebe61a
commit
f23810da20
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
1
test/fuzz/fuzz-udev-rules/line-too-long
Normal file
1
test/fuzz/fuzz-udev-rules/line-too-long
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user