aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/arrayfuncs.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2009-09-04 11:20:23 +0000
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2009-09-04 11:20:23 +0000
commit7be39bb0be87a2fe6ea64c9d48130b78412968a8 (patch)
tree6e6e1c6d01540cf47a6ad529f5b61f317134bb15 /src/backend/utils/adt/arrayfuncs.c
parent237859e4fb13851ffd2f45a6706a0540ca014b5d (diff)
downloadpostgresql-7be39bb0be87a2fe6ea64c9d48130b78412968a8.tar.gz
postgresql-7be39bb0be87a2fe6ea64c9d48130b78412968a8.zip
Tigthen binary receive functions so that they reject values that the text
input functions don't accept either. While the backend can handle such values fine, they can cause trouble in clients and in pg_dump/restore. This is followup to the original issue on time datatype reported by Andrew McNamara a while ago. Like that one, none of these seem worth back-patching.
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
-rw-r--r--src/backend/utils/adt/arrayfuncs.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index 4e33bbe2ca9..e76734edd50 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.160 2009/06/22 04:37:18 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.161 2009/09/04 11:20:22 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1207,8 +1207,17 @@ array_recv(PG_FUNCTION_ARGS)
for (i = 0; i < ndim; i++)
{
+ int ub;
+
dim[i] = pq_getmsgint(buf, 4);
lBound[i] = pq_getmsgint(buf, 4);
+
+ ub = lBound[i] + dim[i] - 1;
+ /* overflow? */
+ if (lBound[i] > ub)
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("integer out of range")));
}
/* This checks for overflow of array dimensions */