]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: stats-json: Define JSON_INT_MAX as a signed integer
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 6 Feb 2025 16:13:50 +0000 (17:13 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 6 Feb 2025 16:19:49 +0000 (17:19 +0100)
A JSON integer is defined in the range [-(2**53)+1, (2**53)-1]. Macro are used
to define the minimum and the maximum value, The minimum one is defined using
the maximum one. So JSON_INT_MAX must be defined as a signed integer value to
avoid wrong cast of JSON_INT_MIN.

It was reported by Coverity in #2841: CID 1587769.

This patch could be backported to all stable versions.

src/stats-json.c

index b493853866fcfdc3edd7193a1de6c80b576f3c13..f66ac7389a0d2b7c528cbd5b7b1c84d2dc281b64 100644 (file)
@@ -60,7 +60,7 @@ static int stats_emit_json_field_tags(struct buffer *out, const struct field *f)
 /* Limit JSON integer values to the range [-(2**53)+1, (2**53)-1] as per
  * the recommendation for interoperable integers in section 6 of RFC 7159.
  */
-#define JSON_INT_MAX ((1ULL << 53) - 1)
+#define JSON_INT_MAX ((1LL << 53) - 1)
 #define JSON_INT_MIN (0 - JSON_INT_MAX)
 
 /* Emits a stats field value and its type in JSON.