diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-01-17 16:21:51 +0100 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-01-24 08:31:55 +0100 |
commit | 557f11b3a20f2cf6897aad067ffde9d92e9fe015 (patch) | |
tree | 78af1f56288d7f83ef38534710553ab472f3e5d6 | |
parent | 0a11aa405d3fbe970458d1cc154970e817826616 (diff) | |
download | procd-557f11b3a20f2cf6897aad067ffde9d92e9fe015.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>
-rw-r--r-- | service/instance.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/service/instance.c b/service/instance.c index 14da862..e5615d5 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, @@ -205,7 +206,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"; @@ -795,9 +796,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)); |