Disregard jails in jail.conf that have bad parameters (parameter/variable

clash, or redefining name/jid).  The current behvaior, of merely warning
and moving on, can lead to unexpected behavior when a jail is created
without the offending parameter defined at all.
This commit is contained in:
Jamie Gritton 2020-08-27 17:04:55 +00:00
parent 555e998919
commit 0eb6603f6b

View File

@ -369,11 +369,13 @@ add_param(struct cfjail *j, const struct cfparam *p, enum intparam ipnum,
if ((flags ^ dp->flags) & PF_VAR) { if ((flags ^ dp->flags) & PF_VAR) {
jail_warnx(j, "variable \"$%s\" cannot have the same " jail_warnx(j, "variable \"$%s\" cannot have the same "
"name as a parameter.", name); "name as a parameter.", name);
j->flags |= JF_FAILED;
return; return;
} }
if (dp->flags & PF_IMMUTABLE) { if (dp->flags & PF_IMMUTABLE) {
jail_warnx(j, "cannot redefine parameter \"%s\".", jail_warnx(j, "cannot redefine parameter \"%s\".",
dp->name); dp->name);
j->flags |= JF_FAILED;
return; return;
} }
if (strcmp(dp->name, name)) { if (strcmp(dp->name, name)) {
@ -405,6 +407,7 @@ add_param(struct cfjail *j, const struct cfparam *p, enum intparam ipnum,
"cannot have the same " "cannot have the same "
"name as a parameter.", "name as a parameter.",
name); name);
j->flags |= JF_FAILED;
return; return;
} }
j->intparams[ipnum] = np; j->intparams[ipnum] = np;