X-Git-Url: http://git.archive.openwrt.org/?p=project%2Frpcd.git;a=blobdiff_plain;f=uci.c;h=060ed2b7d99f22659b0851edca74f56dfe666d1c;hp=62ca7fe0c9a375c46519d519f542c33b28f5aa24;hb=095b1058c8cb1147d11028974be4067009bcfd67;hpb=6f78bfbbdf8534387d649dfbadd63b55c9b1c46d diff --git a/uci.c b/uci.c index 62ca7fe..060ed2b 100644 --- a/uci.c +++ b/uci.c @@ -538,10 +538,9 @@ rpc_uci_get(struct ubus_context *ctx, struct ubus_object *obj, return UBUS_STATUS_PERMISSION_DENIED; ptr.package = blobmsg_data(tb[RPC_G_CONFIG]); - uci_load(cursor, ptr.package, &p); - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); if (tb[RPC_G_SECTION]) { @@ -577,8 +576,7 @@ rpc_uci_get(struct ubus_context *ctx, struct ubus_object *obj, ubus_send_reply(ctx, req, buf.head); out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -606,10 +604,8 @@ rpc_uci_add(struct ubus_context *ctx, struct ubus_object *obj, ptr.package = blobmsg_data(tb[RPC_A_CONFIG]); - uci_load(cursor, ptr.package, &p); - - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); /* add named section */ if (tb[RPC_A_NAME]) @@ -664,8 +660,7 @@ rpc_uci_add(struct ubus_context *ctx, struct ubus_object *obj, ubus_send_reply(ctx, req, buf.head); out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -687,6 +682,7 @@ rpc_uci_merge_set(struct blob_attr *opt, struct uci_ptr *ptr) ptr->o = NULL; ptr->option = blobmsg_name(opt); + ptr->value = NULL; if (rpc_uci_lookup(ptr) || !ptr->s) return; @@ -737,10 +733,9 @@ rpc_uci_set(struct ubus_context *ctx, struct ubus_object *obj, return UBUS_STATUS_PERMISSION_DENIED; ptr.package = blobmsg_data(tb[RPC_S_CONFIG]); - uci_load(cursor, ptr.package, &p); - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); if (tb[RPC_S_SECTION]) { @@ -765,10 +760,7 @@ rpc_uci_set(struct ubus_context *ctx, struct ubus_object *obj, } uci_save(cursor, p); - -out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -844,10 +836,9 @@ rpc_uci_delete(struct ubus_context *ctx, struct ubus_object *obj, return UBUS_STATUS_PERMISSION_DENIED; ptr.package = blobmsg_data(tb[RPC_D_CONFIG]); - uci_load(cursor, ptr.package, &p); - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); if (tb[RPC_D_SECTION]) { @@ -877,10 +868,7 @@ rpc_uci_delete(struct ubus_context *ctx, struct ubus_object *obj, } uci_save(cursor, p); - -out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -910,10 +898,8 @@ rpc_uci_rename(struct ubus_context *ctx, struct ubus_object *obj, if (tb[RPC_R_OPTION]) ptr.option = blobmsg_data(tb[RPC_R_OPTION]); - uci_load(cursor, ptr.package, &p); - - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); if (uci_lookup_ptr(cursor, &ptr, NULL, true)) goto out; @@ -930,8 +916,7 @@ rpc_uci_rename(struct ubus_context *ctx, struct ubus_object *obj, uci_save(cursor, p); out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -958,10 +943,8 @@ rpc_uci_order(struct ubus_context *ctx, struct ubus_object *obj, ptr.package = blobmsg_data(tb[RPC_O_CONFIG]); - uci_load(cursor, ptr.package, &p); - - if (!p) - goto out; + if (uci_load(cursor, ptr.package, &p)) + return rpc_uci_status(); blobmsg_for_each_attr(cur, tb[RPC_O_SECTIONS], rem) { @@ -978,10 +961,7 @@ rpc_uci_order(struct ubus_context *ctx, struct ubus_object *obj, } uci_save(cursor, p); - -out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -1041,10 +1021,8 @@ rpc_uci_changes(struct ubus_context *ctx, struct ubus_object *obj, if (!rpc_uci_read_access(tb[RPC_C_SESSION], tb[RPC_C_CONFIG])) return UBUS_STATUS_PERMISSION_DENIED; - uci_load(cursor, blobmsg_data(tb[RPC_C_CONFIG]), &p); - - if (!p) - goto out; + if (uci_load(cursor, blobmsg_data(tb[RPC_C_CONFIG]), &p)) + return rpc_uci_status(); blob_buf_init(&buf, 0); c = blobmsg_open_array(&buf, "changes"); @@ -1056,9 +1034,7 @@ rpc_uci_changes(struct ubus_context *ctx, struct ubus_object *obj, ubus_send_reply(ctx, req, buf.head); -out: - if (p) - uci_unload(cursor, p); + uci_unload(cursor, p); return rpc_uci_status(); } @@ -1106,9 +1082,7 @@ rpc_uci_revert_commit(struct ubus_context *ctx, struct blob_attr *msg, bool comm if (commit) { - uci_load(cursor, ptr.package, &p); - - if (p) + if (!uci_load(cursor, ptr.package, &p)) { uci_commit(cursor, &p, false); uci_unload(cursor, p); @@ -1207,9 +1181,8 @@ rpc_uci_apply_config(struct ubus_context *ctx, char *config) struct uci_ptr ptr = { 0 }; ptr.package = config; - uci_load(cursor, ptr.package, &p); - if (p) { + if (!uci_load(cursor, ptr.package, &p)) { uci_commit(cursor, &p, false); uci_unload(cursor, p); }