From: Wilfried Goesgens Date: Sat, 7 Oct 2017 19:14:46 +0000 (+0200) Subject: Currently curl_json will barely ignore boolean values in a non erroneous X-Git-Tag: collectd-5.8.0~52 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;ds=sidebyside;h=641c1c3ce02a2bfe45590ef2b4cdf4f2f68472a1;p=collectd.git Currently curl_json will barely ignore boolean values in a non erroneous way, so that if you have an array like this: you will be able to access the 123 number like We now rather call our number parser with 0 for false, 1 for true. --- diff --git a/src/curl_json.c b/src/curl_json.c index 756f24f3..07d575e5 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -226,11 +226,6 @@ static void cj_advance_array(cj_t *db) { #define CJ_CB_ABORT 0 #define CJ_CB_CONTINUE 1 -static int cj_cb_boolean(void *ctx, int boolVal) { - cj_advance_array(ctx); - return CJ_CB_CONTINUE; -} - static int cj_cb_null(void *ctx) { cj_advance_array(ctx); return CJ_CB_CONTINUE; @@ -292,6 +287,14 @@ static int cj_cb_string(void *ctx, const unsigned char *val, yajl_len_t len) { return cj_cb_number(ctx, (const char *)val, len); } /* int cj_cb_string */ +static int cj_cb_boolean(void *ctx, int boolVal) { + if (boolVal) { + return (cj_cb_number (ctx, "1", 1)); + } else { + return (cj_cb_number (ctx, "0", 1)); + } +} /* int cj_cb_boolean */ + static int cj_cb_end(void *ctx) { cj_t *db = (cj_t *)ctx; memset(&db->state[db->depth], 0, sizeof(db->state[db->depth]));