Commit 455b8887 authored by Tom Lane's avatar Tom Lane

Fix pg_resetxlog to use correct path to postmaster.pid.

Since we've already chdir'd into the data directory, the file should
be referenced as just "postmaster.pid", without prefixing the directory
path.  This is harmless in the normal case where an absolute PGDATA path
is used, but quite dangerous if a relative path is specified, since the
program might then fail to notice an active postmaster.

Reported by Hari Babu.  This got broken in my commit
eb5949d1, so patch all active versions.
parent 24c19e6b
......@@ -91,7 +91,6 @@ main(int argc, char *argv[])
char *endptr;
char *DataDir;
int fd;
char path[MAXPGPATH];
set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetxlog"));
......@@ -252,13 +251,12 @@ main(int argc, char *argv[])
* Check for a postmaster lock file --- if there is one, refuse to
* proceed, on grounds we might be interfering with a live installation.
*/
snprintf(path, MAXPGPATH, "%s/postmaster.pid", DataDir);
if ((fd = open(path, O_RDONLY, 0)) < 0)
if ((fd = open("postmaster.pid", O_RDONLY, 0)) < 0)
{
if (errno != ENOENT)
{
fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), progname, path, strerror(errno));
fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"),
progname, "postmaster.pid", strerror(errno));
exit(1);
}
}
......@@ -266,7 +264,7 @@ main(int argc, char *argv[])
{
fprintf(stderr, _("%s: lock file \"%s\" exists\n"
"Is a server running? If not, delete the lock file and try again.\n"),
progname, path);
progname, "postmaster.pid");
exit(1);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment