From: Mohammed Ajmal Siddiqui Date: Wed, 5 Oct 2022 06:50:58 +0000 (+0530) Subject: lxc-attach: Fix lost return codes of spawned processes that are killed X-Git-Tag: v6.0.0~89^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ebca5a005afbc19c08f663e24d3e76518d12fa8;p=thirdparty%2Flxc.git lxc-attach: Fix lost return codes of spawned processes that are killed lxc-attach swallows the return codes of processes that are terminated via a signal, and by default exits with a return code of 0 (i.e. indicating success) even if the command it tried to execute was terminated. This patch fixes it by explicitly checking if the process was terminated via a signal, and returning an appropriate exit code. Note that we add 128 to the signal value to generate the exit code because by convention the exit code is 128 + signal number. e.g. if a process is killed via signal 9, then the error code is 9 + 128 = 137. Signed-off-by: Mohammed Ajmal Siddiqui --- diff --git a/src/lxc/tools/lxc_attach.c b/src/lxc/tools/lxc_attach.c index fa303c7b4..6482b0aee 100644 --- a/src/lxc/tools/lxc_attach.c +++ b/src/lxc/tools/lxc_attach.c @@ -399,6 +399,8 @@ int lxc_attach_main(int argc, char *argv[]) } if (WIFEXITED(ret)) wexit = WEXITSTATUS(ret); + else if (WIFSIGNALED(ret)) + wexit = WTERMSIG(ret) + 128; out: lxc_container_put(c);