]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
escape: add flags argument to quote_command_line()
authorLennart Poettering <lennart@poettering.net>
Thu, 11 Nov 2021 08:32:32 +0000 (09:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 11 Nov 2021 09:05:46 +0000 (10:05 +0100)
That way, we can reuse the call at one more place (see later patch).

src/basic/escape.c
src/basic/escape.h
src/core/execute.c
src/libsystemd/sd-bus/bus-socket.c
src/test/test-escape.c

index 4bb98f9342bc0d0b5f5ea9b6fcb229b3e15b96ee..25f3861a5fe968e386ddf4c1359afad5d50e1550 100644 (file)
@@ -544,7 +544,7 @@ char* shell_maybe_quote(const char *s, ShellEscapeFlags flags) {
         return str_realloc(buf);
 }
 
-char* quote_command_line(char **argv) {
+char* quote_command_line(char **argv, ShellEscapeFlags flags) {
         _cleanup_free_ char *result = NULL;
 
         assert(argv);
@@ -553,7 +553,7 @@ char* quote_command_line(char **argv) {
         STRV_FOREACH(a, argv) {
                 _cleanup_free_ char *t = NULL;
 
-                t = shell_maybe_quote(*a, SHELL_ESCAPE_EMPTY);
+                t = shell_maybe_quote(*a, flags);
                 if (!t)
                         return NULL;
 
index d490510deb1e8a1b3c3bae240f051793e303cc2f..318da6f220347fb6cb1a880a80e64371c07cb1f4 100644 (file)
@@ -69,4 +69,4 @@ char* escape_non_printable_full(const char *str, size_t console_width, XEscapeFl
 
 char* shell_escape(const char *s, const char *bad);
 char* shell_maybe_quote(const char *s, ShellEscapeFlags flags);
-char* quote_command_line(char **argv);
+char* quote_command_line(char **argv, ShellEscapeFlags flags);
index 425e3e5a37cd26281799ed2a8e720f7c9df0b971..6f19f5024e30afebb364619fbe086f395f058d5b 100644 (file)
@@ -3999,16 +3999,15 @@ static int exec_child(
         exec_context_tty_reset(context, params);
 
         if (unit_shall_confirm_spawn(unit)) {
-                const char *vc = params->confirm_spawn;
                 _cleanup_free_ char *cmdline = NULL;
 
-                cmdline = quote_command_line(command->argv);
+                cmdline = quote_command_line(command->argv, SHELL_ESCAPE_EMPTY);
                 if (!cmdline) {
                         *exit_status = EXIT_MEMORY;
                         return log_oom();
                 }
 
-                r = ask_for_confirmation(context, vc, unit, cmdline);
+                r = ask_for_confirmation(context, params->confirm_spawn, unit, cmdline);
                 if (r != CONFIRM_EXECUTE) {
                         if (r == CONFIRM_PRETEND_SUCCESS) {
                                 *exit_status = EXIT_SUCCESS;
@@ -4884,7 +4883,7 @@ static int exec_child(
         if (DEBUG_LOGGING) {
                 _cleanup_free_ char *line = NULL;
 
-                line = quote_command_line(final_argv);
+                line = quote_command_line(final_argv, SHELL_ESCAPE_EMPTY);
                 if (!line) {
                         *exit_status = EXIT_MEMORY;
                         return log_oom();
@@ -4976,7 +4975,7 @@ int exec_spawn(Unit *unit,
         if (r < 0)
                 return log_unit_error_errno(unit, r, "Failed to load environment files: %m");
 
-        line = quote_command_line(command->argv);
+        line = quote_command_line(command->argv, SHELL_ESCAPE_EMPTY);
         if (!line)
                 return log_oom();
 
@@ -6230,7 +6229,7 @@ static void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix) {
         prefix = strempty(prefix);
         prefix2 = strjoina(prefix, "\t");
 
-        cmd = quote_command_line(c->argv);
+        cmd = quote_command_line(c->argv, SHELL_ESCAPE_EMPTY);
         fprintf(f,
                 "%sCommand Line: %s\n",
                 prefix, cmd ? cmd : strerror_safe(ENOMEM));
index 9c448e36394536adc914eba5de7662f3fcb07097..a603764c27ec6994970fcf4bf92730b80a6d7f86 100644 (file)
@@ -968,7 +968,7 @@ int bus_socket_exec(sd_bus *b) {
                 _cleanup_free_ char *line = NULL;
 
                 if (b->exec_argv)
-                        line = quote_command_line(b->exec_argv);
+                        line = quote_command_line(b->exec_argv, SHELL_ESCAPE_EMPTY);
 
                 log_debug("sd-bus: starting bus%s%s with %s%s",
                           b->description ? " " : "", strempty(b->description),
index 3fd318653c2291cf64508c0d0c7befdc30ee5565..75aa86bf697f697022cb18be371e1c1b1ed8c8ce 100644 (file)
@@ -206,7 +206,7 @@ static void test_shell_maybe_quote(void) {
 static void test_quote_command_line_one(char **argv, const char *expected) {
         _cleanup_free_ char *s;
 
-        assert_se(s = quote_command_line(argv));
+        assert_se(s = quote_command_line(argv, SHELL_ESCAPE_EMPTY));
         log_info("%s", s);
         assert_se(streq(s, expected));
 }