summaryrefslogtreecommitdiff
path: root/contrib/pg_xlogdump/pg_xlogdump.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2015-01-04 15:35:46 +0100
committerAndres Freund <andres@anarazel.de>2015-01-04 15:35:46 +0100
commit835a48702e550b6c9958bb053aa6c458971536d0 (patch)
tree9e6fed0773760dcd4c5781a5d824745c6fcbce8c /contrib/pg_xlogdump/pg_xlogdump.c
parent2d8411a0a08d2c24607dc179cb35385e623327c7 (diff)
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.
Diffstat (limited to 'contrib/pg_xlogdump/pg_xlogdump.c')
-rw-r--r--contrib/pg_xlogdump/pg_xlogdump.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/contrib/pg_xlogdump/pg_xlogdump.c b/contrib/pg_xlogdump/pg_xlogdump.c
index 824b8c393c9..37a4c44acd9 100644
--- a/contrib/pg_xlogdump/pg_xlogdump.c
+++ b/contrib/pg_xlogdump/pg_xlogdump.c
@@ -152,7 +152,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 */
@@ -161,7 +161,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");
@@ -173,7 +173,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;
}
}
@@ -185,7 +185,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 */
@@ -194,7 +194,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;