fuzz-systemctl-parse-argv: a new fuzzer

Does what the name suggests. Obviously inspired by sudoers, but note that
our tools are not supposed to be installed suid, so there is no privilege
boundary to cross here.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2021-02-09 14:11:42 +01:00
parent 5bb920ce27
commit 5fd8782328
5 changed files with 70 additions and 2 deletions
+4 -2
View File
@@ -926,7 +926,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
return 1;
}
static int parse_argv(int argc, char *argv[]) {
int systemctl_dispatch_parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
@@ -987,6 +987,7 @@ static int parse_argv(int argc, char *argv[]) {
return systemctl_parse_argv(argc, argv);
}
#ifndef FUZZ_SYSTEMCTL_PARSE_ARGV
static int systemctl_main(int argc, char *argv[]) {
static const Verb verbs[] = {
{ "list-units", VERB_ANY, VERB_ANY, VERB_DEFAULT|VERB_ONLINE_ONLY, list_units },
@@ -1090,7 +1091,7 @@ static int run(int argc, char *argv[]) {
sigbus_install();
r = parse_argv(argc, argv);
r = systemctl_dispatch_parse_argv(argc, argv);
if (r <= 0)
goto finish;
@@ -1167,3 +1168,4 @@ finish:
}
DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(run);
#endif