Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Sergey KOPOSOV <Sergey.Koposov@ed.ac.uk>, pgsql-bugs@lists.postgresql.org
Date: 2021-04-01T17:56:34Z
Lists: pgsql-bugs
On Thu, Apr 01, 2021 at 11:39:33AM -0400, Tom Lane wrote:
> Sergey KOPOSOV <Sergey.Koposov@ed.ac.uk> writes:
> > Importantly This requires running pg_restore without '-Fc' flag, i.e. to let it autodetect.
> 
> > $ cat /tmp/xx1.short | ./src/bin/pg_dump/pg_restore
> > Segmentation fault (core dumped)
> > $ cat /tmp/xx1.short | ./src/bin/pg_dump/pg_restore  -Fc
> > pg_restore: [archiver] unsupported version (1.14) in file header
> 
> Ooooh ... the autodetect + cant-seek code path is just broken.  All of the
> sanity checks on the first few fields of the file --- particularly the
> version number --- just get skipped in this scenario.
> 
> I wonder why it's a good idea to read-ahead any of those fields in the
> first place.  Checking the PGDMP magic string seems sufficient.
> 
> Will fix, thanks for the report!

Yes, thank you both.  I've run into this recently but for some reason I thought
it was fixed.  It probably also explains this one from 2014.
https://www.postgresql.org/message-id/20141206061151.GA725@telsasoft.com

-- 
Justin



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix pg_restore's misdesigned code for detecting archive file format.