Hello. 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;
Patch attached. Found by Linux Verification Center (linuxtesting.org) with SVACE. Reporter: Evgeniy Gorbanev (gorbanyo...@basealt.ru). Organization: BaseALT (o...@basealt.ru). Best regards, Evgeniy
diff --git a/src/bin/pg_dump/compress_zstd.c b/src/bin/pg_dump/compress_zstd.c index cb595b10c2d..d0a58861228 100644 --- a/src/bin/pg_dump/compress_zstd.c +++ b/src/bin/pg_dump/compress_zstd.c @@ -298,7 +298,7 @@ Zstd_read(void *ptr, size_t size, size_t *rdsize, CompressFileHandle *CFH) /* If we have no more input to consume, we're done */ if (cnt == 0) - break; + return false; } while (input->pos < input->size)