From: Felix Fietkau Date: Mon, 26 May 2014 13:53:29 +0000 (+0200) Subject: json_script: fix a segfault in the file free handler X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=commitdiff_plain;h=1344d20ec08e4fc1b6e4dd08fa7dda07f7b6c9bc json_script: fix a segfault in the file free handler Signed-off-by: Felix Fietkau --- diff --git a/json_script.c b/json_script.c index 9d5e9d2..0ec7b38 100644 --- a/json_script.c +++ b/json_script.c @@ -582,12 +582,18 @@ void json_script_run(struct json_script_ctx *ctx, const char *name, json_script_run_file(ctx, file, vars); } -static void __json_script_file_free(struct json_script_ctx *ctx, struct json_script_file *f) +static void __json_script_file_free(struct json_script_file *f) { struct json_script_file *next; - for (next = f->next; f; f = next, next = f->next) - free(f); + if (!f) + return; + + next = f->next; + free(f); + + if (next) + return __json_script_file_free(next); } void @@ -596,7 +602,7 @@ json_script_free(struct json_script_ctx *ctx) struct json_script_file *f, *next; avl_remove_all_elements(&ctx->files, f, avl, next) - __json_script_file_free(ctx, f); + __json_script_file_free(f); blob_buf_free(&ctx->buf); }