aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStephen Frost <sfrost@snowman.net>2018-04-07 19:01:43 -0400
committerStephen Frost <sfrost@snowman.net>2018-04-07 19:01:43 -0400
commit2b74022473f0c7a7fbe11a4973f80478226275bd (patch)
tree03e0788d9634fb439b6af7d2255f42aec6675b7f /src
parentc37b3d08ca6873f9d4eaf24c72a90a550970cbb8 (diff)
downloadpostgresql-2b74022473f0c7a7fbe11a4973f80478226275bd.tar.gz
postgresql-2b74022473f0c7a7fbe11a4973f80478226275bd.zip
Fix EXEC BACKEND + Windows builds for group privs
Under EXEC BACKEND we also need to be going through the group privileges setup since we do support that on Unixy systems, so add that to SubPostmasterMain(). Under Windows, we need to simply return true from GetDataDirectoryCreatePerm(), but that wasn't happening due to a missing #else clause. Per buildfarm.
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/postmaster.c8
-rw-r--r--src/common/file_perm.c9
2 files changed, 15 insertions, 2 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index ccf63e93097..d948369f3ea 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -4802,6 +4802,14 @@ SubPostmasterMain(int argc, char *argv[])
read_nondefault_variables();
/*
+ * Check that the data directory looks valid, which will also check the
+ * privileges on the data directory and update our umask and file/group
+ * variables for creating files later. Note: this should really be done
+ * before we create any files or directories.
+ */
+ checkDataDir();
+
+ /*
* (re-)read control file, as it contains config. The postmaster will
* already have read this, but this process doesn't know about that.
*/
diff --git a/src/common/file_perm.c b/src/common/file_perm.c
index d640d6a1fdd..f2c8f846093 100644
--- a/src/common/file_perm.c
+++ b/src/common/file_perm.c
@@ -78,9 +78,14 @@ GetDataDirectoryCreatePerm(const char *dataDir)
/* Set permissions */
SetDataDirectoryCreatePerm(statBuf.st_mode);
-
return true;
-#endif /* !defined(WIN32) && !defined(__CYGWIN__) */
+#else /* !defined(WIN32) && !defined(__CYGWIN__) */
+ /*
+ * On Windows, we don't have anything to do here since they don't have
+ * Unix-y permissions.
+ */
+ return true;
+#endif
}