aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2009-12-30 01:29:22 +0000
committerRobert Haas <rhaas@postgresql.org>2009-12-30 01:29:22 +0000
commit3d4b0ab29cfee7cbb9932065216b58b6c820a791 (patch)
treedad25ef711c12a380a813d5f105afec569e38d26
parent540e69a0613bad2b6ad15b237a8df27110f4b213 (diff)
downloadpostgresql-3d4b0ab29cfee7cbb9932065216b58b6c820a791.tar.gz
postgresql-3d4b0ab29cfee7cbb9932065216b58b6c820a791.zip
Reject invalid input in int2vectorin.
Since the int2vector type is intended only for internal use, this patch doesn't worry about prettifying the error messages, which has the fringe benefit of avoiding creating additional translatable strings. For a type intended to be used by end-users, we would want to do better, but the approach taken here seems like the correct trade-off for this case. Caleb Welton
-rw-r--r--src/backend/utils/adt/int.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c
index 66cbca7079c..18755894ae4 100644
--- a/src/backend/utils/adt/int.c
+++ b/src/backend/utils/adt/int.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.86 2009/09/04 11:20:22 heikki Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.87 2009/12/30 01:29:22 rhaas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -146,10 +146,11 @@ int2vectorin(PG_FUNCTION_ARGS)
for (n = 0; *intString && n < FUNC_MAX_ARGS; n++)
{
- if (sscanf(intString, "%hd", &result->values[n]) != 1)
- break;
while (*intString && isspace((unsigned char) *intString))
intString++;
+ if (*intString == '\0')
+ break;
+ result->values[n] = pg_atoi(intString, sizeof(int16), ' ');
while (*intString && !isspace((unsigned char) *intString))
intString++;
}