From: Andrew Dunstan Date: Thu, 4 Apr 2013 22:26:52 +0000 (-0400) Subject: Fix off by one error in JSON extract path code. X-Git-Tag: REL9_3_BETA1~134 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e75feb28341ea49e9d41266906e701a4e3742e2e;p=postgresql Fix off by one error in JSON extract path code. Bug report by David Wheeler, diagnosis assistance from Tom Lane. --- diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index 63df1ac677..73bcdf46b1 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -682,9 +682,13 @@ get_array_start(void *state) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("cannot extract field from a non-object"))); - /* initialize array count for this nesting level */ + /* + * initialize array count for this nesting level + * Note: the lex_level seen by array_start is one less than that seen by + * the elements of the array. + */ if (_state->search_type == JSON_SEARCH_PATH && - lex_level <= _state->npath) + lex_level < _state->npath) _state->array_level_index[lex_level] = -1; }