git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 14570c2)
Fix off-by-one in pg_xlogdump's fuzzy_open_file().
Sun, 4 Jan 2015 14:35:46 +0000 (15:35 +0100)
Sun, 4 Jan 2015 14:35:46 +0000 (15:35 +0100)
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.


diff --git a/contrib/pg_xlogdump/pg_xlogdump.c b/contrib/pg_xlogdump/pg_xlogdump.c
index 9f05e254a867eaa9d76901cc04c8d0f189b133a7..03fbe46fc469651656e1317b6af0c38b26659216 100644 (file)
--- a/contrib/pg_xlogdump/pg_xlogdump.c
+++ b/contrib/pg_xlogdump/pg_xlogdump.c
@@ -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;
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /