postgres.git / summary / log / commit / refs

commit    bf65f3c8871bcc95a3b4d5bcb5409d3df05c8273
Author:   Peter Eisentraut <peter@eisentraut.org>
Date:     Mon Jan 13 12:27:39 2020 +0000
First released in: 13.0, 12.2

    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


src/backend/replication/basebackup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index a73893237a4..a1c005157b5 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -1316,7 +1316,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) { [parent: 52bc73038142]