index c14d3f73fca51aceb0e5a4858993d9225eb0edb7..13d5b7af2f47d03f57e33511b54fc1eaddd75ded 100644 (file)
@@ -3814,11 +3814,14 @@ setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
if (level < path_len && !path_nulls[level])
{
char *c = VARDATA_ANY(path_elems[level]);
+ long lindex;
errno = 0;
- idx = (int) strtol(c, &badp, 10);
- if (errno != 0 || badp == c)
+ lindex = strtol(c, &badp, 10);
+ if (errno != 0 || badp == c || lindex > INT_MAX || lindex < INT_MIN)
idx = nelems;
+ else
+ idx = lindex;
}
else
idx = nelems;