diff options
author | Bruce Momjian <bruce@momjian.us> | 2014-02-01 10:49:17 -0500 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2014-02-01 10:49:17 -0500 |
commit | d0ee93797d9c06e619b3f382705d99ee195bb573 (patch) | |
tree | c4a0c4f43381a2d946fabf43c4f56e7915e77fbc /src/backend/utils/adt/arrayfuncs.c | |
parent | 858ec11858a914d4c380971985709b6d6b7dd6fc (diff) | |
download | postgresql-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.c | 8 |
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 " |