From 641c1c3ce02a2bfe45590ef2b4cdf4f2f68472a1 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 7 Oct 2017 21:14:46 +0200 Subject: [PATCH] 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. --- src/curl_json.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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])); -- 2.11.0