From 0fa93c1389ecd10bb11a14968c4120a49bbc90e6 Mon Sep 17 00:00:00 2001
From: Andre Noll <maan@systemlinux.org>
Date: Wed, 21 May 2008 16:36:13 +0200
Subject: [PATCH] Fix the exit hook.

As dss_exec_cmdline_pid() uses the space character as a separator
to split the command line, the words of the error message were
passed as separate parameters to the exit hook.

Use dss_exec() directly to avoid this flaw, i.e. to pass the full
error message as $1 to the exit hook.
---
 dss.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/dss.c b/dss.c
index b27bdf6..7a46eed 100644
--- a/dss.c
+++ b/dss.c
@@ -826,16 +826,13 @@ out:
 static void exit_hook(int exit_code)
 {
 	int fds[3] = {0, 0, 0};
-	char *cmd;
+	char *argv[] = {conf.exit_hook_arg, dss_strerror(-exit_code), NULL};
 	pid_t pid;
 
 	if (!conf.exit_hook_given)
 		return;
-	cmd = make_message("%s %s", conf.exit_hook_arg,
-		dss_strerror(-exit_code));
-	DSS_NOTICE_LOG("executing %s\n", cmd);
-	dss_exec_cmdline_pid(&pid, cmd, fds);
-	free(cmd);
+	DSS_NOTICE_LOG("executing %s %s\n", argv[0], argv[1]);
+	dss_exec(&pid, conf.exit_hook_arg, argv, fds);
 }
 
 static int com_run(void)
-- 
2.39.5