From bf3fe0e8c02ff13171ea9f2a79703abc099105bf Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 20 Nov 2021 16:13:23 +0000 Subject: [PATCH] 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 --- service/instance.c | 32 ++++++++++++++++---------------- 1 file 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; } -- 2.30.2