X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=list.c;h=24382c8464d090746d416fa45e5caef5b213b8b8;hp=502f51f216cd3debaa9e83eb1a8969af71247491;hb=c394d8787defccf5f127f75f7f999d0a8ddff514;hpb=f2520c27cd7942dc01d3386b4083b128648343c0 diff --git a/list.c b/list.c index 502f51f..24382c8 100644 --- a/list.c +++ b/list.c @@ -163,7 +163,7 @@ uci_add_history(struct uci_context *ctx, struct uci_package *p, int cmd, char *s return; if (value) - size += strlen(section) + 1; + size += strlen(value) + 1; h = uci_alloc_element(ctx, history, option, size); ptr = uci_dataptr(h); @@ -339,7 +339,7 @@ int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, list = e->list.prev; switch(e->type) { case UCI_TYPE_SECTION: - UCI_ASSERT(ctx, uci_validate_name(value)); + UCI_ASSERT(ctx, uci_validate_str(value, false)); size = sizeof(struct uci_section); s = uci_to_section(e); section = e->name; @@ -433,7 +433,7 @@ int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char UCI_ASSERT(ctx, uci_validate_name(option)); UCI_ASSERT(ctx, value != NULL); } else { - UCI_ASSERT(ctx, uci_validate_name(value)); + UCI_ASSERT(ctx, uci_validate_str(value, false)); } /* @@ -446,7 +446,7 @@ int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char goto notfound; s = uci_to_section(e); - if (ctx->pctx) + if (ctx->pctx && ctx->pctx->merge) ctx->pctx->section = s; if (option) { @@ -485,7 +485,7 @@ notfound: uci_alloc_option(s, option, value); else { s = uci_alloc_section(p, value, section); - if (ctx->pctx) + if (ctx->pctx && ctx->pctx->merge) ctx->pctx->section = s; }