From 8eac39780d5bfab5f51274081094e1913ecf4722 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 14 May 2010 00:32:21 +0000
Subject: [PATCH] Get rid of unsafe sprintf and snprintf usages.  Per compiler
 warnings.

---
 contrib/pg_upgrade/controldata.c | 8 ++++----
 contrib/pg_upgrade/info.c        | 6 +++---
 contrib/pg_upgrade/server.c      | 9 +++++----
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c
index ccf7a36c9da..78d62c76f4d 100644
--- a/contrib/pg_upgrade/controldata.c
+++ b/contrib/pg_upgrade/controldata.c
@@ -62,10 +62,10 @@ get_control_data(migratorContext *ctx, ClusterInfo *cluster, bool live_check)
 #else
 	SetEnvironmentVariableA("LANG", "C");
 #endif
-	sprintf(cmd, SYSTEMQUOTE "\"%s/%s \"%s\"" SYSTEMQUOTE,
-			cluster->bindir,
-			live_check ? "pg_controldata\"" : "pg_resetxlog\" -n",
-			cluster->pgdata);
+	snprintf(cmd, sizeof(cmd), SYSTEMQUOTE "\"%s/%s \"%s\"" SYSTEMQUOTE,
+			 cluster->bindir,
+			 live_check ? "pg_controldata\"" : "pg_resetxlog\" -n",
+			 cluster->pgdata);
 	fflush(stdout);
 	fflush(stderr);
 
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index 2b0bba6170b..75a29e3d8f6 100644
--- a/contrib/pg_upgrade/info.c
+++ b/contrib/pg_upgrade/info.c
@@ -362,10 +362,10 @@ get_rel_infos(migratorContext *ctx, const DbInfo *dbinfo,
 		curr->reloid = atol(PQgetvalue(res, relnum, i_oid));
 
 		nspname = PQgetvalue(res, relnum, i_nspname);
-		snprintf(curr->nspname, sizeof(curr->nspname), nspname);
+		strlcpy(curr->nspname, nspname, sizeof(curr->nspname));
 
 		relname = PQgetvalue(res, relnum, i_relname);
-		snprintf(curr->relname, sizeof(curr->relname), relname);
+		strlcpy(curr->relname, relname, sizeof(curr->relname));
 
 		curr->relfilenode = atol(PQgetvalue(res, relnum, i_relfilenode));
 		curr->toastrelid = atol(PQgetvalue(res, relnum, i_reltoastrelid));
@@ -374,7 +374,7 @@ get_rel_infos(migratorContext *ctx, const DbInfo *dbinfo,
 		/* if no table tablespace, use the database tablespace */
 		if (strlen(tblspace) == 0)
 			tblspace = dbinfo->db_tblspace;
-		snprintf(curr->tablespace, sizeof(curr->tablespace), "%s", tblspace);
+		strlcpy(curr->tablespace, tblspace, sizeof(curr->tablespace));
 	}
 	PQclear(res);
 
diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
index 15f4c5f07f9..96a72b68764 100644
--- a/contrib/pg_upgrade/server.c
+++ b/contrib/pg_upgrade/server.c
@@ -178,10 +178,11 @@ start_postmaster(migratorContext *ctx, Cluster whichCluster, bool quiet)
 	}
 
 	/* use -l for Win32 */
-	sprintf(cmd, SYSTEMQUOTE "\"%s/pg_ctl\" -l \"%s\" -D \"%s\" "
-	"-o \"-p %d -c autovacuum=off -c autovacuum_freeze_max_age=2000000000\" "
-			"start >> \"%s\" 2>&1" SYSTEMQUOTE,
-			bindir, ctx->logfile, datadir, port, ctx->logfile);
+	snprintf(cmd, sizeof(cmd),
+			 SYSTEMQUOTE "\"%s/pg_ctl\" -l \"%s\" -D \"%s\" "
+			 "-o \"-p %d -c autovacuum=off -c autovacuum_freeze_max_age=2000000000\" "
+			 "start >> \"%s\" 2>&1" SYSTEMQUOTE,
+			 bindir, ctx->logfile, datadir, port, ctx->logfile);
 	exec_prog(ctx, true, "%s", cmd);
 
 	/* wait for the server to start properly */
-- 
GitLab