From dd912c697718e924387dd405413f94e481f8d0d4 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Tue, 27 Aug 2002 03:56:35 +0000
Subject: [PATCH] This patches replaces a few more usages of strcpy() and
 sprintf() when copying into a fixed-size buffer (in this case, a buffer of
 NAMEDATALEN bytes). AFAICT nothing to worry about here, but worth fixing
 anyway...

Neil Conway
---
 src/backend/commands/tablecmds.c   |  6 +++---
 src/backend/parser/analyze.c       |  6 +++---
 src/backend/storage/ipc/shmqueue.c | 14 +++++++-------
 src/backend/utils/adt/acl.c        |  6 +++---
 src/backend/utils/adt/sets.c       |  4 ++--
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 94c687721b0..c4e4affa119 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.33 2002/08/24 15:00:46 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.34 2002/08/27 03:56:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -3370,8 +3370,8 @@ AlterTableCreateToastTable(Oid relOid, bool silent)
 	/*
 	 * Create the toast table and its index
 	 */
-	sprintf(toast_relname, "pg_toast_%u", relOid);
-	sprintf(toast_idxname, "pg_toast_%u_index", relOid);
+	snprintf(toast_relname, NAMEDATALEN, "pg_toast_%u", relOid);
+	snprintf(toast_idxname, NAMEDATALEN, "pg_toast_%u_index", relOid);
 
 	/* this is pretty painful...  need a tuple descriptor */
 	tupdesc = CreateTemplateTupleDesc(3, WITHOUTOID);
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 1890f01c6f0..01e6d867ce4 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *	$Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.242 2002/08/19 19:33:34 tgl Exp $
+ *	$Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.243 2002/08/27 03:56:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -665,7 +665,7 @@ CreateIndexName(char *table_name, char *column_name,
 	 * indexes, only among the indexes we're about to create now; this
 	 * ought to be improved someday.
 	 */
-	strcpy(typename, label);
+	strncpy(typename, label, sizeof(typename));
 
 	for (;;)
 	{
@@ -685,7 +685,7 @@ CreateIndexName(char *table_name, char *column_name,
 
 		/* found a conflict, so try a new name component */
 		pfree(iname);
-		sprintf(typename, "%s%d", label, ++pass);
+		snprintf(typename, sizeof(typename), "%s%d", label, ++pass);
 	}
 
 	return iname;
diff --git a/src/backend/storage/ipc/shmqueue.c b/src/backend/storage/ipc/shmqueue.c
index bbd98038ef1..726ae556c42 100644
--- a/src/backend/storage/ipc/shmqueue.c
+++ b/src/backend/storage/ipc/shmqueue.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmqueue.c,v 1.21 2002/06/20 20:29:35 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmqueue.c,v 1.22 2002/08/27 03:56:35 momjian Exp $
  *
  * NOTES
  *
@@ -214,11 +214,11 @@ dumpQ(SHM_QUEUE *q, char *s)
 	SHM_QUEUE  *start = q;
 	int			count = 0;
 
-	sprintf(buf, "q prevs: %lx", MAKE_OFFSET(q));
+	snprintf(buf, sizeof(buf), "q prevs: %lx", MAKE_OFFSET(q));
 	q = (SHM_QUEUE *) MAKE_PTR(q->prev);
 	while (q != start)
 	{
-		sprintf(elem, "--->%lx", MAKE_OFFSET(q));
+		snprintf(elem, sizeof(elem), "--->%lx", MAKE_OFFSET(q));
 		strcat(buf, elem);
 		q = (SHM_QUEUE *) MAKE_PTR(q->prev);
 		if (q->prev == MAKE_OFFSET(q))
@@ -229,16 +229,16 @@ dumpQ(SHM_QUEUE *q, char *s)
 			break;
 		}
 	}
-	sprintf(elem, "--->%lx", MAKE_OFFSET(q));
+	snprintf(elem, sizeof(elem), "--->%lx", MAKE_OFFSET(q));
 	strcat(buf, elem);
 	elog(SHMQUEUE_DEBUG_ELOG, "%s: %s", s, buf);
 
-	sprintf(buf, "q nexts: %lx", MAKE_OFFSET(q));
+	snprintf(buf, sizeof(buf), "q nexts: %lx", MAKE_OFFSET(q));
 	count = 0;
 	q = (SHM_QUEUE *) MAKE_PTR(q->next);
 	while (q != start)
 	{
-		sprintf(elem, "--->%lx", MAKE_OFFSET(q));
+		snprintf(elem, sizeof(elem), "--->%lx", MAKE_OFFSET(q));
 		strcat(buf, elem);
 		q = (SHM_QUEUE *) MAKE_PTR(q->next);
 		if (q->next == MAKE_OFFSET(q))
@@ -249,7 +249,7 @@ dumpQ(SHM_QUEUE *q, char *s)
 			break;
 		}
 	}
-	sprintf(elem, "--->%lx", MAKE_OFFSET(q));
+	snprintf(elem, sizeof(elem), "--->%lx", MAKE_OFFSET(q));
 	strcat(buf, elem);
 	elog(SHMQUEUE_DEBUG_ELOG, "%s: %s", s, buf);
 }
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 05493033d32..37a5b5b183f 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.76 2002/08/26 17:53:58 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.77 2002/08/27 03:56:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -136,9 +136,9 @@ aclparse(const char *s, AclItem *aip, unsigned *modechg)
 		*s != ACL_MODECHG_EQL_CHR)
 	{
 		/* we just read a keyword, not a name */
-		if (strcmp(name, ACL_IDTYPE_GID_KEYWORD) == 0)
+		if (strncmp(name, ACL_IDTYPE_GID_KEYWORD, sizeof(name)) == 0)
 			idtype = ACL_IDTYPE_GID;
-		else if (strcmp(name, ACL_IDTYPE_UID_KEYWORD) != 0)
+		else if (strncmp(name, ACL_IDTYPE_UID_KEYWORD, sizeof(name)) != 0)
 			elog(ERROR, "aclparse: bad keyword, must be [group|user]");
 		s = getid(s, name);		/* move s to the name beyond the keyword */
 		if (name[0] == '\0')
diff --git a/src/backend/utils/adt/sets.c b/src/backend/utils/adt/sets.c
index d4ba7a18050..2c0beb25e0d 100644
--- a/src/backend/utils/adt/sets.c
+++ b/src/backend/utils/adt/sets.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.51 2002/08/09 16:45:14 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.52 2002/08/27 03:56:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -95,7 +95,7 @@ SetDefine(char *querystr, Oid elemType)
 	if (strcmp(procname, NameStr(proc->proname)) == 0)
 	{
 		/* make the real proc name */
-		sprintf(realprocname, "set%u", setoid);
+		snprintf(realprocname, sizeof(realprocname), "set%u", setoid);
 
 		/* set up the attributes to be modified or kept the same */
 		repl[0] = 'r';
-- 
GitLab