summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2020-01-13 12:27:39 +0000
committerPeter Eisentraut2020-01-13 12:41:12 +0000
commit259bbe177808986e5d226ea7ce5a1ebb74657791 (patch)
treebfde47cfb7dbbfa717b36b3c0dc18d23e776ff66
parent23d0dfa8fa016f7f8af25b1040d7a55ba77da6fc (diff)
Fix base backup with database OIDs larger than INT32_MAX
The use of pg_atoi() for parsing a string into an Oid fails for values larger than INT32_MAX, since OIDs are unsigned. Instead, use atooid(). While this has less error checking, the contents of the data directory are expected to be trustworthy, so we don't need to go out of our way to do full error checking. Discussion: https://www.postgresql.org/message-id/flat/dea47fc8-6c89-a2b1-07e3-754ff1ab094b%402ndquadrant.com
-rw-r--r--src/backend/replication/basebackup.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index 1423e6cd1f..dea8aab45e 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -1291,7 +1291,7 @@ sendDir(const char *path, int basepathlen, bool sizeonly, List *tablespaces,
if (!sizeonly)
sent = sendFile(pathbuf, pathbuf + basepathlen + 1, &statbuf,
- true, isDbDir ? pg_atoi(lastDir + 1, sizeof(Oid), 0) : InvalidOid);
+ true, isDbDir ? atooid(lastDir + 1) : InvalidOid);
if (sent || sizeonly)
{