mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Implement following item in TODO:
* Reject character sequences those are not valid in their charset
This commit is contained in:
		
							parent
							
								
									95dc7785b5
								
							
						
					
					
						commit
						7e99cea816
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user