mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Fix fuzzy error handling in pg_basebackup when opening gzFile
First, this code did not bother checking for a failure when calling dup(). Then, per zlib, gzerror() returns NULL for a NULL input, which can happen if passing down to gzdopen() an invalid file descriptor or if there was an allocation failure. No back-patch is done as this would unlikely be a problem in the field. Per Coverity. Reported-by: Tom Lane
This commit is contained in:
@ -1022,7 +1022,20 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
|
||||
#ifdef HAVE_LIBZ
|
||||
if (compresslevel != 0)
|
||||
{
|
||||
state.ztarfile = gzdopen(dup(fileno(stdout)), "wb");
|
||||
int fd = dup(fileno(stdout));
|
||||
if (fd < 0)
|
||||
{
|
||||
pg_log_error("could not duplicate stdout: %m");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
state.ztarfile = gzdopen(fd, "wb");
|
||||
if (state.ztarfile == NULL)
|
||||
{
|
||||
pg_log_error("could not open output file: %m");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (gzsetparams(state.ztarfile, compresslevel,
|
||||
Z_DEFAULT_STRATEGY) != Z_OK)
|
||||
{
|
||||
|
Reference in New Issue
Block a user