From c890b488063e23f12b5ab01c9a6d254a034fcea2 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Mon, 12 May 2014 10:17:40 +0300
Subject: [PATCH] Free PQresult on error in pg_receivexlog.

The leak is fairly small and rare, but a leak nevertheless.

Per Coverity report. Backpatch to 9.2, where pg_receivexlog was added.
pg_basebackup shares the code, but it always exits on error, so there is
no real leak.
---
 src/bin/pg_basebackup/receivelog.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c
index ca5c7f55bdf..a88457fb288 100644
--- a/src/bin/pg_basebackup/receivelog.c
+++ b/src/bin/pg_basebackup/receivelog.c
@@ -858,6 +858,7 @@ HandleCopyStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline,
 				if (!close_walfile(basedir, partial_suffix, blockpos))
 				{
 					/* Error message written in close_walfile() */
+					PQclear(res);
 					goto error;
 				}
 				if (PQresultStatus(res) == PGRES_COPY_IN)
@@ -867,6 +868,7 @@ HandleCopyStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline,
 						fprintf(stderr,
 								_("%s: could not send copy-end packet: %s"),
 								progname, PQerrorMessage(conn));
+						PQclear(res);
 						goto error;
 					}
 					res = PQgetResult(conn);
-- 
GitLab