A segfault in ujail caused ujail to hang with no chance to abort.
Raising the debug level revealed that SIGSEGV was delivered to
the child process instead of handled directly by ujail. The
corresponding debug message was triggered infinitely again and
again:

        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        forwarding signal 11 to the jailed process
        [...]

Signed-off-by: Leonardo Mörlein <m...@irrelefant.net>
---
 jail/jail.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jail/jail.c b/jail/jail.c
index 8ae477c..67d4cad 100644
--- a/jail/jail.c
+++ b/jail/jail.c
@@ -775,7 +775,7 @@ int main(int argc, char **argv)
 
                if (!sigismember(&sigmask, i))
                        continue;
-               if ((i == SIGCHLD) || (i == SIGPIPE))
+               if ((i == SIGCHLD) || (i == SIGPIPE) || (i == SIGSEGV))
                        continue;
 
                s.sa_handler = jail_handle_signal;
-- 
2.26.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to