summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2021-11-20 16:13:23 +0000
committerDaniel Golle <daniel@makrotopia.org>2021-11-23 13:56:41 +0000
commitbf3fe0e8c02ff13171ea9f2a79703abc099105bf (patch)
treefeb8336fdc7c304c87d537d3d4228bea52f16802
parent8de12dec298898d133256fdaac584a26adae2cc5 (diff)
downloadprocd-bf3fe0e8c02ff13171ea9f2a79703abc099105bf.tar.gz
service: move jail parsing to end of instance parser
Generating parameters for ujail assumes that other instance attributes such as 'env' have already been populated. Move parsing jail to end of the instance parser to make that assumption hold true. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--service/instance.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/service/instance.c b/service/instance.c
index 8cabedb..748c1e5 100644
--- a/service/instance.c
+++ b/service/instance.c
@@ -1387,22 +1387,6 @@ instance_config_parse(struct service_instance *in)
if (tb[INSTANCE_ATTR_RELOADSIG])
in->reload_signal = blobmsg_get_u32(tb[INSTANCE_ATTR_RELOADSIG]);
- if (!in->trace && tb[INSTANCE_ATTR_JAIL])
- in->has_jail = instance_jail_parse(in, tb[INSTANCE_ATTR_JAIL]);
-
- if (in->has_jail) {
- r = stat(UJAIL_BIN_PATH, &s);
- if (r < 0) {
- if (in->require_jail) {
- ERROR("Cannot jail service %s::%s. %s: %m (%d)\n",
- in->srv->name, in->name, UJAIL_BIN_PATH, r);
- return false;
- }
- DEBUG(2, "unable to find %s: %m (%d)\n", UJAIL_BIN_PATH, r);
- in->has_jail = false;
- }
- }
-
if (tb[INSTANCE_ATTR_STDOUT] && blobmsg_get_bool(tb[INSTANCE_ATTR_STDOUT]))
in->_stdout.fd.fd = -1;
@@ -1464,6 +1448,22 @@ instance_config_parse(struct service_instance *in)
}
}
+ if (!in->trace && tb[INSTANCE_ATTR_JAIL])
+ in->has_jail = instance_jail_parse(in, tb[INSTANCE_ATTR_JAIL]);
+
+ if (in->has_jail) {
+ r = stat(UJAIL_BIN_PATH, &s);
+ if (r < 0) {
+ if (in->require_jail) {
+ ERROR("Cannot jail service %s::%s. %s: %m (%d)\n",
+ in->srv->name, in->name, UJAIL_BIN_PATH, r);
+ return false;
+ }
+ DEBUG(2, "unable to find %s: %m (%d)\n", UJAIL_BIN_PATH, r);
+ in->has_jail = false;
+ }
+ }
+
return true;
}