[systemd-devel] [PATCH/resend] systemctl: check the argument to -t for invalid values
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Wed Jun 6 03:07:20 PDT 2012
Systemctl accepted anything as the argument for -t, and simply said '0
units found'. It is better to catch this user error early.
---
A small thing thing I noticed today.
src/systemctl/systemctl.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 66f4113..d353071 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -4325,6 +4325,19 @@ static int runlevel_help(void) {
return 0;
}
+static int arg_type_ok(const char *type) {
+
+ static const char *types[] = {"service", "socket", "device",
"mount",
+ "swap", "automount", "target",
"path",
+ "timer", "snapshot"};
+ unsigned i;
+
+ for (i=0; i<ELEMENTSOF(types); i++)
+ if (!strcmp(type, types[i]))
+ return true;
+ return false;
+}
+
static int systemctl_parse_argv(int argc, char *argv[]) {
enum {
@@ -4408,6 +4421,10 @@ static int systemctl_parse_argv(int argc, char
*argv[]) {
return 0;
case 't':
+ if (!arg_type_ok(optarg)) {
+ log_error("Invalid unit type '%s'",
optarg);
+ return -EINVAL;
+ }
arg_type = optarg;
break;
-- 1.7.10.2.667.gf1138e2
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Attached Message Part
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20120606/994c7697/attachment.asc>
More information about the systemd-devel
mailing list