UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
UCI_ASSERT(ctx, p != NULL);
- UCI_ASSERT(ctx, section != NULL);
+ UCI_ASSERT(ctx, uci_validate_name(section));
+ if (option)
+ UCI_ASSERT(ctx, uci_validate_name(option));
e = uci_lookup_list(ctx, &p->sections, section);
if (!e)
int size;
UCI_HANDLE_ERR(ctx);
- UCI_ASSERT(ctx, value != NULL);
- UCI_ASSERT(ctx, element != NULL);
- UCI_ASSERT(ctx, *element != NULL);
+ UCI_ASSERT(ctx, (element != NULL) && (*element != NULL));
/* what the 'value' of an element means depends on the type
* for a section, the 'value' means its type
list = e->list.prev;
switch(e->type) {
case UCI_TYPE_SECTION:
+ UCI_ASSERT(ctx, uci_validate_name(value));
size = sizeof(struct uci_section);
s = uci_to_section(e);
section = e->name;
option = NULL;
break;
case UCI_TYPE_OPTION:
+ UCI_ASSERT(ctx, value != NULL);
size = sizeof(struct uci_option);
s = uci_to_option(e)->section;
section = s->e.name;
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
- UCI_ASSERT(ctx, p != NULL);
- UCI_ASSERT(ctx, section != NULL);
+ /* NB: p, section, option validated by uci_lookup */
UCI_INTERNAL(uci_lookup, ctx, &e, p, section, option);
if (!internal)
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
- UCI_ASSERT(ctx, p != NULL);
- UCI_ASSERT(ctx, section != NULL);
+ /* NB: p, section, option validated by uci_lookup */
UCI_INTERNAL(uci_lookup, ctx, &e, p, section, option);
- if (!internal)
- return uci_del_element(ctx, e);
- UCI_INTERNAL(uci_del_element, ctx, e);
-
- return 0;
+ ctx->internal = internal;
+ return uci_del_element(ctx, e);
}
int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char *option, char *value)
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
- UCI_ASSERT(ctx, section != NULL);
- UCI_ASSERT(ctx, value != NULL);
+ UCI_ASSERT(ctx, uci_validate_name(section));
+ if (option) {
+ UCI_ASSERT(ctx, uci_validate_name(option));
+ UCI_ASSERT(ctx, value != NULL);
+ } else {
+ UCI_ASSERT(ctx, uci_validate_name(value));
+ }
/*
* look up the package, section and option (if set)
else
e = &s->e;
- if (!internal)
- return uci_set_element_value(ctx, &e, value);
-
- UCI_INTERNAL(uci_set_element_value, ctx, &e, value);
- return 0;
+ ctx->internal = internal;
+ return uci_set_element_value(ctx, &e, value);
notfound:
/*