postgres.git / summary / log / commit / refs

commit    f0e2770956a8a6975dd70dd0bc3fdec073b50493
Author:   Andres Freund <andres@anarazel.de>
Date:     Sun Jan 04 14:35:47 2015 +0000

    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.


contrib/pg_xlogdump/pg_xlogdump.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/pg_xlogdump/pg_xlogdump.c b/contrib/pg_xlogdump/pg_xlogdump.c index 24ca4fa8552..666c3409feb 100644 --- a/contrib/pg_xlogdump/pg_xlogdump.c +++ b/contrib/pg_xlogdump/pg_xlogdump.c @@ -151,7 +151,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 */ @@ -160,7 +160,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"); @@ -172,7 +172,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; } } @@ -184,7 +184,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 */ @@ -193,7 +193,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; [parent: d33f36f16e6a]