Unverified Commit 2492b2e3 by Long Wang Committed by Stéphane Graber

lxc-init: move initialization of act to outside of the loop

Signed-off-by: 's avatarLong Wang <w@laoqinren.net>
parent f602f03d
...@@ -81,6 +81,7 @@ int main(int argc, char *argv[]) ...@@ -81,6 +81,7 @@ int main(int argc, char *argv[])
int err; int err;
char **aargv; char **aargv;
sigset_t mask, omask; sigset_t mask, omask;
struct sigaction act;
int i, have_status = 0, shutdown = 0; int i, have_status = 0, shutdown = 0;
int opt; int opt;
char *lxcpath = NULL, *name = NULL, *logpriority = NULL; char *lxcpath = NULL, *name = NULL, *logpriority = NULL;
...@@ -138,9 +139,19 @@ int main(int argc, char *argv[]) ...@@ -138,9 +139,19 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
for (i = 1; i < NSIG; i++) { if (sigfillset(&act.sa_mask) ||
struct sigaction act; sigdelset(&act.sa_mask, SIGILL) ||
sigdelset(&act.sa_mask, SIGSEGV) ||
sigdelset(&act.sa_mask, SIGBUS) ||
sigdelset(&act.sa_mask, SIGSTOP) ||
sigdelset(&act.sa_mask, SIGKILL)) {
ERROR("Failed to set signal");
exit(EXIT_FAILURE);
}
act.sa_flags = 0;
act.sa_handler = interrupt_handler;
for (i = 1; i < NSIG; i++) {
/* Exclude some signals: ILL, SEGV and BUS are likely to /* Exclude some signals: ILL, SEGV and BUS are likely to
* reveal a bug and we want a core. STOP and KILL cannot be * reveal a bug and we want a core. STOP and KILL cannot be
* handled anyway: they're here for documentation. 32 and 33 * handled anyway: they're here for documentation. 32 and 33
...@@ -154,18 +165,6 @@ int main(int argc, char *argv[]) ...@@ -154,18 +165,6 @@ int main(int argc, char *argv[])
i == 32 || i == 33) i == 32 || i == 33)
continue; continue;
if (sigfillset(&act.sa_mask) ||
sigdelset(&act.sa_mask, SIGILL) ||
sigdelset(&act.sa_mask, SIGSEGV) ||
sigdelset(&act.sa_mask, SIGBUS) ||
sigdelset(&act.sa_mask, SIGSTOP) ||
sigdelset(&act.sa_mask, SIGKILL)) {
ERROR("Failed to set signal");
exit(EXIT_FAILURE);
}
act.sa_flags = 0;
act.sa_handler = interrupt_handler;
if (sigaction(i, &act, NULL) && errno != EINVAL) { if (sigaction(i, &act, NULL) && errno != EINVAL) {
SYSERROR("Failed to sigaction"); SYSERROR("Failed to sigaction");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment