Fix buffer overrun in to_ascii(), per report from Guido Notari.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Apr 2003 21:08:14 +0000 (21:08 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Apr 2003 21:08:14 +0000 (21:08 +0000)
src/backend/utils/adt/ascii.c

index a62672a5e539bb3b6dedb5de8165965623a18b0e..ca84709423358db934cc0c074ae3d4689f56d69e 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * ascii.c
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.12 2001/11/05 17:46:28 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.12.2.1 2003/04/02 21:08:14 tgl Exp $
  *
  *  Portions Copyright (c) 1999-2000, PostgreSQL Global Development Group
  *
@@ -67,9 +67,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
@@ -106,12 +106,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;