]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: check rt_sigaction return values on linux
authorRuss Cox <rsc@golang.org>
Fri, 15 Feb 2013 18:13:19 +0000 (13:13 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 15 Feb 2013 18:13:19 +0000 (13:13 -0500)
(If the mask size is wrong the system call fails.)

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/7305097

src/pkg/runtime/signal_linux_386.c
src/pkg/runtime/signal_linux_arm.c

index 8b9c5e43a5706b52c92452e3a2453d7d93c48b7a..1fdb03f572963b9d7e86641460b148d65aa46c30 100644 (file)
@@ -128,7 +128,8 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart)
        // under nohup and do not set explicit handler.
        if(i == SIGHUP) {
                runtime·memclr((byte*)&sa, sizeof sa);
-               runtime·rt_sigaction(i, nil, &sa, sizeof(sa.sa_mask));
+               if(runtime·rt_sigaction(i, nil, &sa, sizeof(sa.sa_mask)) != 0)
+                       runtime·throw("rt_sigaction read failure");
                if(sa.k_sa_handler == SIG_IGN)
                        return;
        }
index e2b1500934c2575e998566eb2bc11d77a04060dc..577ac29bfa2e3b0a48042f6f80cbdc6aa6e1a95e 100644 (file)
@@ -144,7 +144,8 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart)
        // under nohup and do not set explicit handler.
        if(i == SIGHUP) {
                runtime·memclr((byte*)&sa, sizeof sa);
-               runtime·rt_sigaction(i, nil, &sa, sizeof(sa.sa_mask));
+               if(runtime·rt_sigaction(i, nil, &sa, sizeof(sa.sa_mask)) != 0)
+                       runtime·throw("rt_sigaction read failure");
                if(sa.sa_handler == SIG_IGN)
                        return;
        }