From aec6068446e28074dcebce30709ac52d6857cdc8 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 13 Feb 2020 17:02:57 +0000 Subject: [PATCH] config: Reject rather than silently ignoring wrong closure values find_cl_if(...,fail_if_invalid=False,,..) is only called in places where a particular closure, or nothing, is expected. It is really not a good idea for this function to silently ignore config keys of the wrongn type. It should behave more like dict_read_number and dict_read_bool. There are possible compatibility implications, but they can be solved by deleting the wrong (currently-ignored) information from the config file(s). Signed-off-by: Ian Jackson --- conffile.c | 6 ++---- secnet.h | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/conffile.c b/conffile.c index e6cf48f..e3a74aa 100644 --- a/conffile.c +++ b/conffile.c @@ -655,20 +655,18 @@ void add_closure(dict_t *dict, cstring_t name, apply_fn apply) } void *find_cl_if(dict_t *dict, cstring_t name, uint32_t type, - bool_t fail_if_invalid, cstring_t desc, struct cloc loc) + bool_t required, cstring_t desc, struct cloc loc) { item_t *i; closure_t *cl; - i = dict_find_item(dict,name,fail_if_invalid,desc,loc); + i = dict_find_item(dict,name,required,desc,loc); if (!i) return NULL; if (i->type!=t_closure) { - if (!fail_if_invalid) return NULL; cfgfatal(loc,desc,"\"%s\" must be a closure\n",name); } cl=i->data.closure; if (cl->type!=type) { - if (!fail_if_invalid) return NULL; cfgfatal(loc,desc,"\"%s\" is the wrong type of closure\n",name); } return cl->interface; diff --git a/secnet.h b/secnet.h index ffe8360..3f5a197 100644 --- a/secnet.h +++ b/secnet.h @@ -198,7 +198,7 @@ extern item_t *list_elem(list_t *l, int32_t index); extern list_t *new_closure(closure_t *cl); extern void add_closure(dict_t *dict, cstring_t name, apply_fn apply); extern void *find_cl_if(dict_t *dict, cstring_t name, uint32_t type, - bool_t fail_if_invalid, cstring_t desc, + bool_t required, cstring_t desc, struct cloc loc); extern item_t *dict_find_item(dict_t *dict, cstring_t key, bool_t required, cstring_t desc, struct cloc loc); -- 2.30.2