]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sleep: properly pass verb to sleep script
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Jun 2019 09:31:06 +0000 (11:31 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Jun 2019 11:04:03 +0000 (13:04 +0200)
Another fall-out from our rewriting of argv[] now.

Fixes: #12782
src/sleep/sleep.c

index 11757f2efae16a1b37f6a46490fa8eb33b241147..c38aa4ccf67927e68459ee83d81b50bcb6f18c2b 100644 (file)
@@ -35,6 +35,8 @@
 
 static char* arg_verb = NULL;
 
+STATIC_DESTRUCTOR_REGISTER(arg_verb, freep);
+
 static int write_hibernate_location_info(void) {
         _cleanup_free_ char *device = NULL, *type = NULL;
         _cleanup_free_ struct fiemap *fiemap = NULL;
@@ -317,7 +319,9 @@ static int parse_argv(int argc, char *argv[]) {
                                        "Usage: %s COMMAND",
                                        program_invocation_short_name);
 
-        arg_verb = argv[optind];
+        arg_verb = strdup(argv[optind]);
+        if (!arg_verb)
+                return log_oom();
 
         if (!STR_IN_SET(arg_verb, "suspend", "hibernate", "hybrid-sleep", "suspend-then-hibernate"))
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),