From 2a1d0875ca13d4b1b1d12da88400a9ff64af5b28 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Fri, 29 Oct 2021 16:54:46 +0200 Subject: [PATCH] BUILD: Try to fix the -Werror=conversion returned from gcc (see CI) --- src/base/json.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/base/json.c b/src/base/json.c index 700ef60a..4a16254e 100644 --- a/src/base/json.c +++ b/src/base/json.c @@ -194,7 +194,7 @@ LKT_IGNORE_WARN_FMT_SECURITY int json_parse(const char *str, int asked_level, json_parse_callback call, void *user) { - int level = 0; + int64_t level = 0; char key[LKT_LINE_MAX]; char val[LKT_LINE_MAX]; char tmp[LKT_LINE_MAX]; @@ -205,7 +205,9 @@ json_parse(const char *str, int asked_level, json_parse_callback call, void *use /* Begin of a block */ if ((len = strspn(str, __JSON_BEGIN))) { - level += len; + if (len >= INT64_MAX) + return 1; /* Json error */ + level += (int64_t)len; str += len; } @@ -213,8 +215,10 @@ json_parse(const char *str, int asked_level, json_parse_callback call, void *use else if ((len = strspn(str, __JSON_END))) { if ((level == asked_level) && call(NULL, NULL, 1, user) != 0) return 2; + if (len >= INT64_MAX) + return 1; /* Json error */ str += len; - level -= len; + level -= (int64_t)len; } /* Key Value */ @@ -241,8 +245,8 @@ LKT_POP int json_parse_get_count(const char *str, int asked_level) { - int level = 0; - int ret_len = 0; + int64_t level = 0; + int ret_len = 0; for (;;) { size_t len = 0; @@ -250,15 +254,19 @@ json_parse_get_count(const char *str, int asked_level) /* Begin of a block */ if ((len = strspn(str, __JSON_BEGIN))) { - level += len; + if (len >= INT64_MAX) + return 1; /* Json error */ + level += (int64_t)len; str += len; } /* End of a block */ else if ((len = strspn(str, __JSON_END))) { + if (len >= INT64_MAX) + return 1; /* Json error */ ret_len += (level == asked_level); str += len; - level -= len; + level -= (int64_t)len; } /* Key Value */ -- GitLab