summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2020-01-17 16:21:51 +0100
committerPetr Štetiar <ynezz@true.cz>2020-01-21 15:41:46 +0100
commitb44417c20c7fca5a7f7c581c04ac67bf5316e56e (patch)
tree802ca3fdce2bd125b41ad960d503d94db45a6075 /service
parent81b88b1c63770542985f8cb0665eff37e27eb412 (diff)
downloadprocd-b44417c20c7fca5a7f7c581c04ac67bf5316e56e.tar.gz
instance: provide error feedback if ujail binary is missing
Otherwise it's quite hard to track such issues. While at it, be DRY and use UJAIL_BIN_PATH constant for ujail binary. Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'service')
-rw-r--r--service/instance.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/service/instance.c b/service/instance.c
index 3b4e93a..658c086 100644
--- a/service/instance.c
+++ b/service/instance.c
@@ -36,6 +36,7 @@
#include "service.h"
#include "instance.h"
+#define UJAIL_BIN_PATH "/sbin/ujail"
enum {
INSTANCE_ATTR_COMMAND,
@@ -207,7 +208,7 @@ jail_run(struct service_instance *in, char **argv)
struct jail *jail = &in->jail;
int argc = 0;
- argv[argc++] = "/sbin/ujail";
+ argv[argc++] = UJAIL_BIN_PATH;
if (jail->name) {
argv[argc++] = "-n";
@@ -800,9 +801,13 @@ instance_jail_parse(struct service_instance *in, struct blob_attr *attr)
struct blob_attr *tb[__JAIL_ATTR_MAX];
struct jail *jail = &in->jail;
struct stat s;
+ int r;
- if (stat("/sbin/ujail", &s))
+ r = stat(UJAIL_BIN_PATH, &s);
+ if (r < 0) {
+ ERROR("unable to find %s: %m (%d)\n", UJAIL_BIN_PATH, r);
return 0;
+ }
blobmsg_parse(jail_attr, __JAIL_ATTR_MAX, tb,
blobmsg_data(attr), blobmsg_data_len(attr));