From 376ee1503356c6029f91207636df5dc40e7ec244 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 2 Jun 2007 16:41:09 +0000
Subject: [PATCH] Fix erroneous error reporting for overlength input in
 text_date(), text_time(), and text_timetz().  7.4-vintage bug found by Greg
 Stark.

---
 src/backend/utils/adt/date.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c
index 9ead120245f..7e4b461f8f1 100644
--- a/src/backend/utils/adt/date.c
+++ b/src/backend/utils/adt/date.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.130 2007/05/30 19:38:05 neilc Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.131 2007/06/02 16:41:09 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -918,8 +918,9 @@ text_date(PG_FUNCTION_ARGS)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_DATETIME_FORMAT),
 				 errmsg("invalid input syntax for type date: \"%s\"",
-						VARDATA(str))));
-
+						DatumGetCString(DirectFunctionCall1(textout,
+													PointerGetDatum(str))))));
+	
 	sp = VARDATA(str);
 	dp = dstr;
 	for (i = 0; i < (VARSIZE(str) - VARHDRSZ); i++)
@@ -1659,7 +1660,8 @@ text_time(PG_FUNCTION_ARGS)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_DATETIME_FORMAT),
 				 errmsg("invalid input syntax for type time: \"%s\"",
-						VARDATA(str))));
+						DatumGetCString(DirectFunctionCall1(textout, 
+													PointerGetDatum(str))))));
 
 	len = VARSIZE(str) - VARHDRSZ;
 	memcpy(dstr, VARDATA(str), len); 
@@ -2443,7 +2445,8 @@ text_timetz(PG_FUNCTION_ARGS)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_DATETIME_FORMAT),
 		  errmsg("invalid input syntax for type time with time zone: \"%s\"",
-				 VARDATA(str))));
+				 DatumGetCString(DirectFunctionCall1(textout, 
+													 PointerGetDatum(str))))));
 
 	sp = VARDATA(str);
 	dp = dstr;
-- 
GitLab