From ef0eecfa1f36cf85cef838fbcc7ed13b42c274e2 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 30 Mar 1998 17:46:45 +0000 Subject: [PATCH] This simple patch to catalog/pg_type.c fixes a buffer overrun. It 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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index 9fef898f2b..2ca77f2992 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -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 */