From d0ee93797d9c06e619b3f382705d99ee195bb573 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 1 Feb 2014 10:49:17 -0500 Subject: arrays: tighten checks for multi-dimensional input Previously an input array string that started with a single-element array dimension would then later accept a multi-dimensional segment. BACKWARD INCOMPATIBILITY --- src/backend/utils/adt/arrayfuncs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/backend/utils/adt/arrayfuncs.c') diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 311d0c22f06..91df1842427 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -425,8 +425,8 @@ ArrayCount(const char *str, int *dim, char typdelim) for (i = 0; i < MAXDIM; ++i) { - temp[i] = dim[i] = 0; - nelems_last[i] = nelems[i] = 1; + temp[i] = dim[i] = nelems_last[i] = 0; + nelems[i] = 1; } ptr = str; @@ -540,8 +540,8 @@ ArrayCount(const char *str, int *dim, char typdelim) errmsg("malformed array literal: \"%s\"", str))); nest_level--; - if ((nelems_last[nest_level] != 1) && - (nelems[nest_level] != nelems_last[nest_level])) + if (nelems_last[nest_level] != 0 && + nelems[nest_level] != nelems_last[nest_level]) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("multidimensional arrays must have " -- cgit v1.2.3