]> granicus.if.org Git - postgresql/commitdiff
This simple patch to catalog/pg_type.c fixes a buffer overrun. It
authorBruce Momjian <bruce@momjian.us>
Mon, 30 Mar 1998 17:46:45 +0000 (17:46 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 30 Mar 1998 17:46:45 +0000 (17:46 +0000)
was detected by Electric Fence and triggered by statements like:

SELECT * into table t from pg_database;

The system would crash on a memmove call in DataFile() with arguments
like this:

memmove(0x0, 0x0, 0);

Maurice Gittens

src/backend/catalog/pg_type.c

index 9fef898f2b380d37a0179735d456219f09b6e682..2ca77f29926c9610374b366918e26201bc2ae88f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.20 1998/02/26 04:30:45 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.21 1998/03/30 17:46:45 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -318,6 +318,7 @@ TypeCreate(char *typeName,
        TupleDesc       tupDesc;
 
        Oid                     argList[8];
+       NameData                name;
 
 
        static ScanKeyData typeKey[1] = {
@@ -387,7 +388,8 @@ TypeCreate(char *typeName,
         * ----------------
         */
        i = 0;
-       values[i++] = PointerGetDatum(typeName);        /* 1 */
+       namestrcpy(&name,typeName);
+       values[i++] = NameGetDatum(&name);      /* 1 */
        values[i++] = (Datum) GetUserId();      /* 2 */
        values[i++] = (Datum) internalSize; /* 3 */
        values[i++] = (Datum) externalSize; /* 4 */