diff options
author | Daniel Golle <daniel@makrotopia.org> | 2021-11-20 16:13:23 +0000 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2021-11-23 13:56:41 +0000 |
commit | bf3fe0e8c02ff13171ea9f2a79703abc099105bf (patch) | |
tree | feb8336fdc7c304c87d537d3d4228bea52f16802 | |
parent | 8de12dec298898d133256fdaac584a26adae2cc5 (diff) | |
download | procd-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.c | 32 |
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; } |