[OpenWrt-Devel,v2,08/10] json_script: fix logic invert of handle_expr_not().
diff mbox

Message ID 1415800763-14311-9-git-send-email-yszhou4tech@gmail.com
State Changes Requested
Headers show

Commit Message

Yousong Zhou Nov. 12, 2014, 1:59 p.m. UTC
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
---
 json_script.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Felix Fietkau Dec. 11, 2014, 4:52 p.m. UTC | #1
On 2014-11-12 14:59, Yousong Zhou wrote:
> Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
> ---
>  json_script.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/json_script.c b/json_script.c
> index 0ec7b38..0d51f79 100644
> --- a/json_script.c
> +++ b/json_script.c
> @@ -338,7 +338,7 @@ static int handle_expr_not(struct json_call *call, struct blob_attr *expr)
>  	if (!tb[1])
>  		return -1;
>  
> -	return json_process_expr(call, tb[1]);
> +	return !json_process_expr(call, tb[1]);
Simply adding ! is not enough. This needs to check for ret < 0 for
proper error handling.

- Felix
Yousong Zhou Dec. 12, 2014, 4 a.m. UTC | #2
On 12 December 2014 at 00:52, Felix Fietkau <nbd@openwrt.org> wrote:
> On 2014-11-12 14:59, Yousong Zhou wrote:
>> Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
>> ---
>>  json_script.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/json_script.c b/json_script.c
>> index 0ec7b38..0d51f79 100644
>> --- a/json_script.c
>> +++ b/json_script.c
>> @@ -338,7 +338,7 @@ static int handle_expr_not(struct json_call *call, struct blob_attr *expr)
>>       if (!tb[1])
>>               return -1;
>>
>> -     return json_process_expr(call, tb[1]);
>> +     return !json_process_expr(call, tb[1]);
> Simply adding ! is not enough. This needs to check for ret < 0 for
> proper error handling.

Yes.  I will fix this.

BTW, I see that blobmsg_realloc_string_buffer() should return NULL if
blob_buf_grow() fails, but I can not decide the proper return value of
eval_string() in this case.  Currently it's non-zero for
non-terminated variable reference.  I tend to add various
ERR_JSON_SCRIPT_OOM and json_script_err2str() for use with
handle_error(), but I am afraid that it may break too much packages


               yousong

Patch
diff mbox

diff --git a/json_script.c b/json_script.c
index 0ec7b38..0d51f79 100644
--- a/json_script.c
+++ b/json_script.c
@@ -338,7 +338,7 @@  static int handle_expr_not(struct json_call *call, struct blob_attr *expr)
 	if (!tb[1])
 		return -1;
 
-	return json_process_expr(call, tb[1]);
+	return !json_process_expr(call, tb[1]);
 }
 
 static const struct json_handler expr[] = {