aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sandbox.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sandbox.c b/sandbox.c
index 1ea9c1c..9e06155 100644
--- a/sandbox.c
+++ b/sandbox.c
@@ -13,6 +13,8 @@ void sbox_enter(const char *basedir)
return;
}
+ int smail = !xs_is_true(xs_dict_get(srv_config, "disable_email_notifications"));
+
srv_debug(1, xs_fmt("Calling unveil()"));
unveil(basedir, "rwc");
unveil("/tmp", "rwc");
@@ -25,6 +27,9 @@ void sbox_enter(const char *basedir)
if (*address == '/')
unveil(address, "rwc");
+ if (smail)
+ unveil("/usr/sbin/sendmail", "x");
+
unveil(NULL, NULL);
srv_debug(1, xs_fmt("Calling pledge()"));
@@ -34,6 +39,9 @@ void sbox_enter(const char *basedir)
if (*address == '/')
p = xs_str_cat(p, " unix");
+ if (smail)
+ p = xs_str_cat(p, " exec");
+
pledge(p, NULL);
}