Re: No error checking when reading from file using zstd in pg_dump
Daniel Gustafsson <daniel@yesql.se>
From: Daniel Gustafsson <daniel@yesql.se>
To: Evgeniy Gorbanev <gorbanyoves@basealt.ru>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2025-06-16T08:25:43Z
Lists: pgsql-hackers
> 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
Commits
-
pg_dump: Fix compression API errorhandling
- ec017a305bd4 16.11 landed
- e686010c5b47 19 (unreleased) landed
- 92268b35d04c 17.7 landed
- 8980c724b559 18.0 landed