summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/varchar.c
diff options
context:
space:
mode:
authorTatsuo Ishii <ishii@postgresql.org>2001-09-11 05:18:59 +0000
committerTatsuo Ishii <ishii@postgresql.org>2001-09-11 05:18:59 +0000
commit7e99cea816bde08ba3bda2de4e972adc624a659e (patch)
tree70938a894a940b9d4c5305a70f821247522c2965 /src/backend/utils/adt/varchar.c
parent95dc7785b5f7b0e78dbd7d17ab53fb08d4108ad6 (diff)
Implement following item in TODO:
* Reject character sequences those are not valid in their charset
Diffstat (limited to 'src/backend/utils/adt/varchar.c')
-rw-r--r--src/backend/utils/adt/varchar.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 38b26173ad2..b142d126c1c 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.81 2001/07/15 11:07:37 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.82 2001/09/11 05:18:59 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@@ -75,10 +75,14 @@ bpcharin(PG_FUNCTION_ARGS)
int i;
#ifdef MULTIBYTE
int charlen; /* number of charcters in the input string */
+ char *ermsg;
#endif
len = strlen(s);
#ifdef MULTIBYTE
+ if ((ermsg = pg_verifymbstr(s, len)))
+ elog(ERROR,"%s",ermsg);
+
charlen = pg_mbstrlen(s);
#endif
@@ -405,8 +409,15 @@ varcharin(PG_FUNCTION_ARGS)
int32 atttypmod = PG_GETARG_INT32(2);
VarChar *result;
size_t len, maxlen;
+#ifdef MULTIBYTE
+ char *ermsg;
+#endif
len = strlen(s);
+#ifdef MULTIBYTE
+ if ((ermsg = pg_verifymbstr(s, len)))
+ elog(ERROR,"%s",ermsg);
+#endif
maxlen = atttypmod - VARHDRSZ;
if (atttypmod >= (int32) VARHDRSZ && len > maxlen)