aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/arrayfuncs.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2014-02-01 10:49:17 -0500
committerBruce Momjian <bruce@momjian.us>2014-02-01 10:49:17 -0500
commitd0ee93797d9c06e619b3f382705d99ee195bb573 (patch)
treec4a0c4f43381a2d946fabf43c4f56e7915e77fbc /src/backend/utils/adt/arrayfuncs.c
parent858ec11858a914d4c380971985709b6d6b7dd6fc (diff)
downloadpostgresql-d0ee93797d9c06e619b3f382705d99ee195bb573.tar.gz
postgresql-d0ee93797d9c06e619b3f382705d99ee195bb573.zip
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
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
-rw-r--r--src/backend/utils/adt/arrayfuncs.c8
1 files changed, 4 insertions, 4 deletions
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 "