Re: No error checking when reading from file using zstd in pg_dump - Mailing list pgsql-hackers

From Evgeniy Gorbanev
Subject Re: No error checking when reading from file using zstd in pg_dump
Date
Msg-id 95255a86-4bc7-4ff4-aa26-4441aafdf0fb@basealt.ru
Whole thread Raw
Responses Re: No error checking when reading from file using zstd in pg_dump
List pgsql-hackers
16.06.2025 14:25, Daniel Gustafsson пишет:
>> On 16 Jun 2025, at 10:14, Evgeniy Gorbanev <gorbanyoves@basealt.ru> wrote:
>> In src/bin/pg_dump/compress_zstd.c, the Zstd_read function always
>> returns true. But if you look at the Zstd_gets and Zstd_getc functions,
>> where Zstd_read is called via CFH->read_func, it is expected that
>> the Zstd_read function can also return false. In case of
>> a read-from-file error, the process is expected to terminate, but
>> pg_dump will continue the process.
>> I assume that after checking
>> if (cnt == 0)
>> should be
>> return false;
>       if (cnt == 0)
> -        break;
> +        return false;
>
> As cnt is coming from fread() returning false here would be wrong as you cannot
> from 0 alone know if it's EOF or an error.  Instead it needs to inspect the
> stream with feof() and ferror() to know how to proceed.
>
> --
> Daniel Gustafsson

The feof() check is in the calling functions, e.g. in the Zstd_getc
function.


Regards, Evgeniy




pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: Possibly hard-to-read message
Next
From: Потапов Александр
Date:
Subject: Re: Init connection time grows quadratically