diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-10-19 18:19:41 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-10-19 18:19:41 +0000 |
| commit | 861a679fc131a7c75d3ac7a23728f02ff1c8ec03 (patch) | |
| tree | c87d491ee9905b4278dbf01afe76ed51000651d6 /src/backend/postmaster | |
| parent | 6430e6e2831dc35a6e45bf09baac8c0c212d71d7 (diff) | |
| download | postgresql-861a679fc131a7c75d3ac7a23728f02ff1c8ec03.tar.gz | |
Set optreset on platforms that have it before launching postmaster
subprocesses; perhaps this will fix portability problem just noted by
Lockhart. Also, move test for bad permissions of DataDir to a more
logical place.
Diffstat (limited to 'src/backend/postmaster')
| -rw-r--r-- | src/backend/postmaster/postmaster.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 024f62de01..635880136c 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.247 2001/10/19 17:03:08 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.248 2001/10/19 18:19:41 tgl Exp $ * * NOTES * @@ -275,6 +275,7 @@ checkDataDir(const char *checkdir) { char path[MAXPGPATH]; FILE *fp; + struct stat stat_buf; if (checkdir == NULL) { @@ -286,6 +287,22 @@ checkDataDir(const char *checkdir) progname); ExitPostmaster(2); } + + /* + * Check if the directory has group or world access. If so, reject. + */ + if (stat(checkdir, &stat_buf) == -1) + { + if (errno == ENOENT) + elog(FATAL, "data directory %s was not found", checkdir); + else + elog(FATAL, "could not read permissions of directory %s: %m", + checkdir); + } + + if (stat_buf.st_mode & (S_IRWXG | S_IRWXO)) + elog(FATAL, "data directory %s has group or world access; permissions should be u=rwx (0700)", + checkdir); /* Look for PG_VERSION before looking for pg_control */ ValidatePgVersion(checkdir); @@ -421,7 +438,7 @@ PostmasterMain(int argc, char *argv[]) IgnoreSystemIndexes(false); - optind = 1; /* start over */ + optind = 1; /* start over (should be redundant here) */ #ifdef HAVE_INT_OPTRESET optreset = 1; #endif @@ -2162,6 +2179,11 @@ DoBackend(Port *port) av[ac] = (char *) NULL; + optind = 1; /* reset getopt(3) for subprocess */ +#ifdef HAVE_INT_OPTRESET + optreset = 1; +#endif + /* * Release postmaster's working memory context so that backend can * recycle the space. Note this does not trash *MyProcPort, because @@ -2451,7 +2473,10 @@ SSDataBase(int xlop) av[ac] = (char *) NULL; - optind = 1; + optind = 1; /* reset getopt(3) for subprocess */ +#ifdef HAVE_INT_OPTRESET + optreset = 1; +#endif BootstrapMain(ac, av); ExitPostmaster(0); |
