From ec54a6efcf102057c944e5c7c3b05dbcbb2d979a Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 2 Apr 2003 21:07:59 +0000
Subject: [PATCH] Fix buffer overrun in to_ascii(), per report from Guido
 Notari.

---
 src/backend/utils/adt/ascii.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/backend/utils/adt/ascii.c b/src/backend/utils/adt/ascii.c
index 0a2820721dc..9595876286b 100644
--- a/src/backend/utils/adt/ascii.c
+++ b/src/backend/utils/adt/ascii.c
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * ascii.c
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.13 2002/08/29 07:22:26 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.14 2003/04/02 21:07:59 tgl Exp $
  *
  *	 Portions Copyright (c) 1999-2000, PostgreSQL Global Development Group
  *
@@ -27,9 +27,9 @@ static text *encode_to_ascii(text *data, int enc);
 char *
 pg_to_ascii(unsigned char *src, unsigned char *src_end, unsigned char *desc, int enc)
 {
-	unsigned char *x = NULL;
-	unsigned char *ascii = NULL;
-	int			range = 0;
+	unsigned char *x;
+	unsigned char *ascii;
+	int			range;
 
 	/*
 	 * relevant start for an encoding
@@ -66,12 +66,13 @@ pg_to_ascii(unsigned char *src, unsigned char *src_end, unsigned char *desc, int
 	{
 		elog(ERROR, "pg_to_ascii(): unsupported encoding from %s",
 			 pg_encoding_to_char(enc));
+		return NULL;			/* keep compiler quiet */
 	}
 
 	/*
 	 * Encode
 	 */
-	for (x = src; x <= src_end; x++)
+	for (x = src; x < src_end; x++)
 	{
 		if (*x < 128)
 			*desc++ = *x;
-- 
GitLab