From bec35da8bfac1c1c905a0d8a6f35d4b3f9962b31 Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Sun, 7 Dec 1997 20:57:45 +0000
Subject: [PATCH] Add error check on getenv("DATADIR") Add code to set DATADIR
 in postmaster.c if -D is used

---
 src/backend/libpq/crypt.c           |  6 +++++-
 src/backend/postmaster/postmaster.c | 11 ++++++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index c75d8ac4590..4e4cb15f81b 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -25,9 +25,13 @@ char* crypt_getpwdfilename() {
   static char*     filename = NULL;
 
   if (!filename) {
-    char*     env;
+    char*     env = NULL;
 
     env = getenv("PGDATA");
+    if(env == NULL) {
+      elog(FATAL, "crypt.c: PGDATA is not defined");
+      exit(-1);
+    }
     filename = (char*)malloc(strlen(env) + strlen(CRYPT_PWD_FILE) + 2);
     sprintf(filename, "%s/%s", env, CRYPT_PWD_FILE);
   }
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index b4d1f955992..7201d0a6d99 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.63 1997/12/04 00:27:17 scrappy Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.64 1997/12/07 20:57:45 scrappy Exp $
  *
  * NOTES
  *
@@ -332,6 +332,11 @@ PostmasterMain(int argc, char *argv[])
 			case 'D':
 				/* Set PGDATA from the command line. */
 				DataDir = optarg;
+				{
+					char envEntry[2 * ARGV_SIZE];
+					sprintf(envEntry, "PGDATA=%s", DataDir);
+					putenv(envEntry);
+				}
 				break;
 			case 'd':
 
@@ -1151,8 +1156,8 @@ BackendStartup(StartupInfo *packet,		/* client's startup packet */
 		sprintf(envEntry[3], "PGDATA=%s", DataDir);
 		putenv(envEntry[3]);
 	}
-        sprintf(envEntry[4], "IPC_KEY=%d", ipc_key);
-        putenv(envEntry[4]);
+	sprintf(envEntry[4], "IPC_KEY=%d", ipc_key);
+	putenv(envEntry[4]);
 
 	if (DebugLvl > 2)
 	{
-- 
GitLab