Merge "Add support for resetting signal masks"
diff --git a/libminijail.c b/libminijail.c
index a29ebdf..3a03955 100644
--- a/libminijail.c
+++ b/libminijail.c
@@ -108,6 +108,7 @@
int do_init:1;
int pid_file:1;
int alt_syscall:1;
+ int reset_signal_mask:1;
} flags;
uid_t uid;
gid_t gid;
@@ -308,6 +309,10 @@
j->flags.caps = 1;
}
+void API minijail_reset_signal_mask(struct minijail* j) {
+ j->flags.reset_signal_mask = 1;
+}
+
void API minijail_namespace_vfs(struct minijail *j)
{
j->flags.vfs = 1;
@@ -1696,6 +1701,14 @@
}
free(oldenv_copy);
+ if (j->flags.reset_signal_mask) {
+ sigset_t signal_mask;
+ if (sigemptyset(&signal_mask) != 0)
+ pdie("sigemptyset failed");
+ if (sigprocmask(SIG_SETMASK, &signal_mask, NULL) != 0)
+ pdie("sigprocmask failed");
+ }
+
if (j->flags.userns)
enter_user_namespace(j, userns_pipe_fds);
diff --git a/libminijail.h b/libminijail.h
index 80bffc0..ecc385a 100644
--- a/libminijail.h
+++ b/libminijail.h
@@ -53,6 +53,7 @@
void minijail_parse_seccomp_filters(struct minijail *j, const char *path);
void minijail_log_seccomp_filter_failures(struct minijail *j);
void minijail_use_caps(struct minijail *j, uint64_t capmask);
+void minijail_reset_signal_mask(struct minijail *j);
void minijail_namespace_vfs(struct minijail *j);
void minijail_namespace_enter_vfs(struct minijail *j, const char *ns_path);
void minijail_namespace_ipc(struct minijail *j);