aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2020-04-17 10:45:15 +0900
committerMichael Paquier <michael@paquier.xyz>2020-04-17 10:45:15 +0900
commitc03356995f861e02bfdf94054092fcbdf3240519 (patch)
treef7ad901df6d5e321e94f364051977ea27f823f22
parent687e566b90f3ed5874d7026fb5897841519415d0 (diff)
downloadpostgresql-c03356995f861e02bfdf94054092fcbdf3240519.tar.gz
postgresql-c03356995f861e02bfdf94054092fcbdf3240519.zip
Fix minor memory leak in pg_basebackup and pg_receivewal
The result of the query used to retrieve the WAL segment size from the backend was not getting freed in two code paths. Both pg_basebackup and pg_receivewal exit immediately if a failure happened on this query, so this was not an actual problem, but it could be an issue if this code gets used for other tools in different ways, be they future tools in this code tree or external, existing, ones. Oversight in commit fc49e24, so backpatch down to 11. Author: Jie Zhang Discussion: https://postgr.es/m/970ad9508461469b9450b64027842331@G08CNEXMBPEKD06.g08.fujitsu.local Backpatch-through: 11
-rw-r--r--src/bin/pg_basebackup/streamutil.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index 79f17e4089f..6f9473bc55d 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -315,9 +315,12 @@ RetrieveWalSegSize(PGconn *conn)
if (sscanf(PQgetvalue(res, 0, 0), "%d%s", &xlog_val, xlog_unit) != 2)
{
pg_log_error("WAL segment size could not be parsed");
+ PQclear(res);
return false;
}
+ PQclear(res);
+
/* set the multiplier based on unit to convert xlog_val to bytes */
if (strcmp(xlog_unit, "MB") == 0)
multiplier = 1024 * 1024;
@@ -336,7 +339,6 @@ RetrieveWalSegSize(PGconn *conn)
return false;
}
- PQclear(res);
return true;
}