Hi, Per Coverity.
The use of type "long" is problematic with Windows 64bits. Long type on Windows 64bits is 32 bits. See at: https://docs.microsoft.com/pt-br/cpp/cpp/data-type-ranges?view=msvc-160 *long* 4 *long int*, *signed long int* -2.147.483.648 a 2.147.483.647 Therefore long never be > INT_MAX at Windows 64 bits. Thus lindex is always false in this expression: if (errno != 0 || badp == c || *badp != '\0' || lindex > INT_MAX || lindex < INT_MIN) Patch suggestion to fix this. diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index 215a10f16e..54b0eded76 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -1675,7 +1675,7 @@ push_path(JsonbParseState **st, int level, Datum *path_elems, * end, the access index must be normalized by level. */ enum jbvType *tpath = palloc0((path_len - level) * sizeof(enum jbvType)); - long lindex; + int64 lindex; JsonbValue newkey; /* regards, Ranier Vilela
jsonfuncs.patch
Description: Binary data