From b6ef9fa45155a6d1eaa99e3ea248bc6031afa0e0 Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Tue, 16 Jun 2015 10:39:53 +0200 Subject: [PATCH 1/2] mxqd: Do not execute invalid job.argv_str commands. This fixes issue https://github.molgen.mpg.de/mariux64/mxq/issues/13 --- mxqd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mxqd.c b/mxqd.c index b2b2b96b..7ce3d960 100644 --- a/mxqd.c +++ b/mxqd.c @@ -960,7 +960,14 @@ unsigned long start_job(struct mxq_group_list *group) } - char **argv = str_to_strvec(mxqjob.job_argv_str); + argv = str_to_strvec(mxqjob.job_argv_str); + if (!argv) { + mx_log_err("job=%s(%d):%lu:%lu Can't recaculate commandline. str_to_strvev(%s) failed: %m", + group->group.user_name, group->group.user_uid, group->group.group_id, mxqjob.job_id, + mxqjob.job_argv_str); + _exit(EX__MAX + 1); + } + execvp(argv[0], argv); mx_log_err("job=%s(%d):%lu:%lu execvp(\"%s\", ...): %m", group->group.user_name, group->group.user_uid, group->group.group_id, mxqjob.job_id, From 71fee8a95e89d760f57be7e2a0f55194f058db5b Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Tue, 16 Jun 2015 10:45:44 +0200 Subject: [PATCH 2/2] mxqd: Fix exit codes in child process --- mxqd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mxqd.c b/mxqd.c index 7ce3d960..d9fbcac4 100644 --- a/mxqd.c +++ b/mxqd.c @@ -938,7 +938,7 @@ unsigned long start_job(struct mxq_group_list *group) res = init_child_process(group, &mxqjob); if (!res) - exit(1); + _exit(EX__MAX + 1); mxq_job_set_tmpfilenames(&group->group, &mxqjob); @@ -972,7 +972,7 @@ unsigned long start_job(struct mxq_group_list *group) mx_log_err("job=%s(%d):%lu:%lu execvp(\"%s\", ...): %m", group->group.user_name, group->group.user_uid, group->group.group_id, mxqjob.job_id, argv[0]); - exit(1); + _exit(EX__MAX + 1); } gettimeofday(&mxqjob.stats_starttime, NULL);