diff --git a/src/config.c b/src/config.c index 7c8f7cd66e8098bee17215797d36c62b4cf3812a..9006844aea141fbb0571c2752a46bbe8930a7edc 100644 --- a/src/config.c +++ b/src/config.c @@ -163,7 +163,8 @@ struct uci_package *uci_load_pkg(struct uci_context **ctx, const char *config) } if (uci_load(*ctx, config, &pkg) != UCI_OK) { - free(*ctx); + uci_free_context(*ctx); + *ctx = NULL; return NULL; } @@ -1563,9 +1564,12 @@ int config_update(const char *confname, struct agent_config *cfg, struct uci_element *e; ctx = uci_alloc_context(); - if (ctx && uci_load(ctx, confname, &pkg) != UCI_OK) { + if (!ctx) + return -1; + + if (uci_load(ctx, confname, &pkg) != UCI_OK) { dbg("config file '%s' not found!\n", confname); - free(ctx); + uci_free_context(ctx); return -1; } @@ -1629,9 +1633,12 @@ int config_update2(const char *confname, struct agent_config *cfg, struct uci_element *e; ctx = uci_alloc_context(); - if (ctx && uci_load(ctx, confname, &pkg) != UCI_OK) { + if (!ctx) + return -1; + + if (uci_load(ctx, confname, &pkg) != UCI_OK) { dbg("config file '%s' not found!\n", confname); - free(ctx); + uci_free_context(ctx); return -1; }