]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxc-attach: Fix lost return codes of spawned processes that are killed
authorMohammed Ajmal Siddiqui <ajmalsiddiqui21@gmail.com>
Wed, 5 Oct 2022 06:50:58 +0000 (12:20 +0530)
committerStéphane Graber <stgraber@ubuntu.com>
Fri, 16 Dec 2022 16:35:05 +0000 (11:35 -0500)
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 <ajmalsiddiqui21@gmail.com>
src/lxc/tools/lxc_attach.c

index d7888ddf420068db0c1480c6c84062565cb111d4..8c519f1168521384d6f40547a5c52260b7551e77 100644 (file)
@@ -398,6 +398,8 @@ int main(int argc, char *argv[])
        }
        if (WIFEXITED(ret))
                wexit = WEXITSTATUS(ret);
+       else if (WIFSIGNALED(ret))
+               wexit = WTERMSIG(ret) + 128;
 
 out:
        lxc_container_put(c);