Commit d1c57523 authored by Andres Freund's avatar Andres Freund

Fix off-by-one in pg_xlogdump's fuzzy_open_file().

In the unlikely case of stdin (fd 0) being closed, the off-by-one
would lead to pg_xlogdump failing to open files.

Spotted by Coverity.

Backpatch to 9.3 where pg_xlogdump was introduced.
parent 14570c28
......@@ -171,7 +171,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fname, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
else if (fd > 0)
else if (fd >= 0)
return fd;
/* XLOGDIR / fname */
......@@ -180,7 +180,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
else if (fd > 0)
else if (fd >= 0)
return fd;
datadir = getenv("PGDATA");
......@@ -192,7 +192,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
else if (fd > 0)
else if (fd >= 0)
return fd;
}
}
......@@ -204,7 +204,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
else if (fd > 0)
else if (fd >= 0)
return fd;
/* directory / XLOGDIR / fname */
......@@ -213,7 +213,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
else if (fd > 0)
else if (fd >= 0)
return fd;
}
return -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