Re: pg_basebackup fails on databases with high OIDs
Peter Eisentraut <[email protected]> Mon, 13 Jan 2020 13:49:35 +0100
| Newsgroups | gmane.comp.db.postgresql.devel.general |
|---|---|
| Organization | 2ndQuadrant |
| Message-ID | <[email protected]> |
On 2020-01-11 17:47, Magnus Hagander wrote: > On Sat, Jan 11, 2020 at 5:44 PM Julien Rouhaud <[email protected]> wrote: >> >> On Sat, Jan 11, 2020 at 08:21:11AM +0100, Peter Eisentraut wrote: >>> On 2020-01-06 21:00, Magnus Hagander wrote: >>>>> +0.5 to avoid calling OidInputFunctionCall() >>>> >>>> Or just directly using atol() instead of atoi()? Well maybe not >>>> directly but in a small wrapper that verifies it's not bigger than an >>>> unsigned? >>>> >>>> Unlike in cases where we use oidin etc, we are dealing with data that >>>> is "mostly trusted" here, aren't we? Meaning we could call atol() on >>>> it, and throw an error if it overflows, and be done with it? >>>> Subdirectories in the data directory aren't exactly "untrusted enduser >>>> data"... >>> >>> Yeah, it looks like we are using strtoul() without additional error checking >>> in similar situations, so here is a patch doing it like that. >> >>> - true, isDbDir ? pg_atoi(lastDir + 1, sizeof(Oid), 0) : InvalidOid); >>> + true, isDbDir ? (Oid) strtoul(lastDir + 1, NULL, 10) : InvalidOid); >> >> Looking at some other code, I just discovered the atooid() macro that already >> does the same, maybe it'd be better for consistency to use that instead? > > +1. Whie it does the same thing, consistency is good! :) committed -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services