mirror of
https://github.com/postgres/postgres.git
synced 2025-06-10 09:21:54 +03:00
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.
This commit is contained in:
parent
2d8411a0a0
commit
835a48702e
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user