aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/enum.c
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2007-04-02 22:14:17 +0000
committerAndrew Dunstan <andrew@dunslane.net>2007-04-02 22:14:17 +0000
commit325feaef7f46e609973360b4102c1acfc4924d72 (patch)
tree909f79a312e324b14e720eafc31906b82b59c882 /src/backend/utils/adt/enum.c
parentffb27446ccd76e1b5fb8ec7d0aaa0dffe36d7902 (diff)
downloadpostgresql-325feaef7f46e609973360b4102c1acfc4924d72.tar.gz
postgresql-325feaef7f46e609973360b4102c1acfc4924d72.zip
Check length of enum literals on definition and input to make sure they will fit in a name field and not cause syscache errors.
Diffstat (limited to 'src/backend/utils/adt/enum.c')
-rw-r--r--src/backend/utils/adt/enum.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c
index 288894ec3fb..635d232912e 100644
--- a/src/backend/utils/adt/enum.c
+++ b/src/backend/utils/adt/enum.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.1 2007/04/02 03:49:39 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.2 2007/04/02 22:14:17 adunstan Exp $
*
*-------------------------------------------------------------------------
*/
@@ -45,6 +45,15 @@ cstring_enum(char *name, Oid enumtypoid)
HeapTuple tup;
Oid enumoid;
+ /* must check length to prevent Assert failure within SearchSysCache */
+
+ if (strlen(name) >= NAMEDATALEN)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+ errmsg("invalid input value for enum %s: \"%s\"",
+ format_type_be(enumtypoid),
+ name)));
+
tup = SearchSysCache(ENUMTYPOIDNAME,
ObjectIdGetDatum(enumtypoid),
CStringGetDatum(name),