From: Andre Noll Date: Wed, 21 May 2008 14:36:13 +0000 (+0200) Subject: Fix the exit hook. X-Git-Tag: v0.1.1~8 X-Git-Url: http://git.tuebingen.mpg.de/?p=dss.git;a=commitdiff_plain;h=0fa93c1389ecd10bb11a14968c4120a49bbc90e6;hp=c2510797579203c7fd6bef531f29726a56055298 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. --- 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)