diff options
author | Tatsuo Ishii <ishii@postgresql.org> | 2001-09-11 05:18:59 +0000 |
---|---|---|
committer | Tatsuo Ishii <ishii@postgresql.org> | 2001-09-11 05:18:59 +0000 |
commit | 7e99cea816bde08ba3bda2de4e972adc624a659e (patch) | |
tree | 70938a894a940b9d4c5305a70f821247522c2965 /src | |
parent | 95dc7785b5f7b0e78dbd7d17ab53fb08d4108ad6 (diff) | |
download | postgresql-7e99cea816bde08ba3bda2de4e972adc624a659e.tar.gz postgresql-7e99cea816bde08ba3bda2de4e972adc624a659e.zip |
Implement following item in TODO:
* Reject character sequences those are not valid in their charset
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/varchar.c | 13 | ||||
-rw-r--r-- | src/backend/utils/adt/varlena.c | 11 |
2 files changed, 22 insertions, 2 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) diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 9bc42cf05e7..75eee05eeae 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.71 2001/08/13 18:45:35 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.72 2001/09/11 05:18:59 ishii Exp $ * *------------------------------------------------------------------------- */ @@ -154,8 +154,17 @@ textin(PG_FUNCTION_ARGS) char *inputText = PG_GETARG_CSTRING(0); text *result; int len; +#ifdef MULTIBYTE + char *ermsg; +#endif len = strlen(inputText) + VARHDRSZ; + +#ifdef MULTIBYTE + if ((ermsg = pg_verifymbstr(inputText, len - VARHDRSZ))) + elog(ERROR,"%s",ermsg); +#endif + result = (text *) palloc(len); VARATT_SIZEP(result) = len; |