diff options
Diffstat (limited to 'src/firejail/main.c')
-rw-r--r-- | src/firejail/main.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c index e2f197a92..eebb04fcc 100644 --- a/src/firejail/main.c +++ b/src/firejail/main.c | |||
@@ -1778,7 +1778,8 @@ int main(int argc, char **argv) { | |||
1778 | signal (SIGTERM, my_handler); | 1778 | signal (SIGTERM, my_handler); |
1779 | 1779 | ||
1780 | // wait for the child to finish | 1780 | // wait for the child to finish |
1781 | waitpid(child, NULL, 0); | 1781 | int status = NULL; |
1782 | waitpid(child, &status, 0); | ||
1782 | 1783 | ||
1783 | // free globals | 1784 | // free globals |
1784 | #ifdef HAVE_SECCOMP | 1785 | #ifdef HAVE_SECCOMP |
@@ -1799,7 +1800,13 @@ int main(int argc, char **argv) { | |||
1799 | } | 1800 | } |
1800 | } | 1801 | } |
1801 | 1802 | ||
1802 | myexit(0); | 1803 | if (WIFEXITED(status)){ |
1804 | myexit(WEXITSTATUS(status)); | ||
1805 | } else if (WIFSIGNALED(status)) { | ||
1806 | myexit(WTERMSIG(status)); | ||
1807 | } else { | ||
1808 | myexit(0); | ||
1809 | } | ||
1803 | 1810 | ||
1804 | return 0; | 1811 | return 0; |
1805 | } | 1812 | } |