diff options
Diffstat (limited to 'src/backend/utils/adt/enum.c')
-rw-r--r-- | src/backend/utils/adt/enum.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c index 01a726be447..1eb8ccfaee5 100644 --- a/src/backend/utils/adt/enum.c +++ b/src/backend/utils/adt/enum.c @@ -18,6 +18,7 @@ #include "access/htup_details.h" #include "catalog/indexing.h" #include "catalog/pg_enum.h" +#include "catalog/pg_type.h" #include "libpq/pqformat.h" #include "utils/array.h" #include "utils/builtins.h" @@ -104,6 +105,10 @@ enum_recv(PG_FUNCTION_ARGS) char *name; int nbytes; + /* guard against pre-9.3 misdeclaration of enum_recv */ + if (get_fn_expr_argtype(fcinfo->flinfo, 0) == CSTRINGOID) + elog(ERROR, "invalid argument for enum_recv"); + name = pq_getmsgtext(buf, buf->len - buf->cursor, &nbytes); /* must check length to prevent Assert failure within SearchSysCache */ |