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

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Sergey KOPOSOV <Sergey(dot)Koposov(at)ed(dot)ac(dot)uk>
Cc: "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG
Date: 2021-04-01 15:39:33
Message-ID: 3413025.1617291573@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Sergey KOPOSOV <Sergey(dot)Koposov(at)ed(dot)ac(dot)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!

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Justin Pryzby 2021-04-01 17:56:34 Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG
Previous Message Sergey KOPOSOV 2021-04-01 13:05:44 Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG