mirror of
https://github.com/postgres/postgres.git
synced 2025-05-15 19:15:29 +03:00
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
This commit is contained in:
parent
52bc730381
commit
bf65f3c887
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user