afb-wsj1: Fix json parsing of unterminated 67/15367/2
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 13 Jul 2018 09:13:29 +0000 (11:13 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Fri, 13 Jul 2018 10:19:11 +0000 (12:19 +0200)
When receiving 'false', 'true' or 1, the tokener isn't able
to terminate its job without ambiguity. Catch this case
to force a terminating character.

Change-Id: I5c78f759852060ccf0fac87b3f6fc33a65bf30c9
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-wsj1.c

index 79cb66e..466b58a 100644 (file)
@@ -392,6 +392,8 @@ struct json_object *afb_wsj1_msg_object_j(struct afb_wsj1_msg *msg)
                pthread_mutex_lock(&msg->wsj1->mutex);
                json_tokener_reset(msg->wsj1->tokener);
                object = json_tokener_parse_ex(msg->wsj1->tokener, msg->object_s, (int)msg->object_s_length);
+               if (object == NULL && json_tokener_get_error(msg->wsj1->tokener) == json_tokener_continue)
+                       object = json_tokener_parse_ex(msg->wsj1->tokener, "", 1);
                pthread_mutex_unlock(&msg->wsj1->mutex);
                if (object == NULL) {
                        /* lazy error detection of json request. Is it to improve? */