If strict mode is enabled and we're parsing a config file with multiple
sections of the same name but different types, then raise a parse error
to notify the user that the subsequent section declaration would shadow
all prior ones of the same name.
The error would be triggered by a config like that:
config typeA example
option test 1
config typeB example
option test 2
In such a case, libuci will raise this error:
uci: Parse error (section of different type overwrites prior section with same name) at line 4, byte 23
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
} else {
uci_fill_ptr(ctx, &ptr, &pctx->package->e);
e = uci_lookup_list(&pctx->package->sections, name);
- if (e)
+ if (e) {
ptr.s = uci_to_section(e);
+
+ if ((ctx->flags & UCI_FLAG_STRICT) && strcmp(ptr.s->type, type))
+ uci_parse_error(ctx, "section of different type overwrites prior section with same name");
+ }
+
ptr.section = name;
ptr.value = type;