From 8090616847daad2c3b5f322bb67a0a1eed3ddcd4 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 3 Dec 2004 21:26:31 +0000
Subject: [PATCH] Use StrNCpy not strncpy to fill hash key, to ensure the
 resulting key is null-terminated.  I think this is not a real bug because the
 parser would always have truncated the identifier to NAMEDATALEN-1 already,
 but let's be safe.  Per report from Klocwork.

---
 src/backend/commands/prepare.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c
index b618e3ae0e7..ae9366c5ee1 100644
--- a/src/backend/commands/prepare.c
+++ b/src/backend/commands/prepare.c
@@ -10,7 +10,7 @@
  * Copyright (c) 2002-2004, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.33 2004/10/25 00:46:40 neilc Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.34 2004/12/03 21:26:31 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -296,8 +296,7 @@ StorePreparedStatement(const char *stmt_name,
 
 	/* Check for pre-existing entry of same name */
 	/* See notes in FetchPreparedStatement */
-	MemSet(key, 0, sizeof(key));
-	strncpy(key, stmt_name, sizeof(key));
+	StrNCpy(key, stmt_name, sizeof(key));
 
 	hash_search(prepared_queries, key, HASH_FIND, &found);
 
@@ -370,8 +369,7 @@ FetchPreparedStatement(const char *stmt_name, bool throwError)
 		 * the hash package is picky enough that it needs to be
 		 * NULL-padded out to the appropriate length to work correctly.
 		 */
-		MemSet(key, 0, sizeof(key));
-		strncpy(key, stmt_name, sizeof(key));
+		StrNCpy(key, stmt_name, sizeof(key));
 
 		entry = (PreparedStatement *) hash_search(prepared_queries,
 												  key,
-- 
GitLab