aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-02-11 18:35:23 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2015-02-11 18:35:23 -0500
commit9179444d070713f53a97bc8f5c898a8304424c4d (patch)
tree9188631b31d169e0cda379124858f85270bd4385 /src
parent9feefedf9e92066fa6609d1e1e17b4892d81716f (diff)
downloadpostgresql-9179444d070713f53a97bc8f5c898a8304424c4d.tar.gz
postgresql-9179444d070713f53a97bc8f5c898a8304424c4d.zip
Fix more memory leaks in failure path in buildACLCommands.
We already had one go at this issue in commit d73b7f973db5ec7e, but we failed to notice that buildACLCommands also leaked several PQExpBuffers along with a simply malloc'd string. This time let's try to make the fix a bit more future-proof by eliminating the separate exit path. It's still not exactly critical because pg_dump will curl up and die on failure; but since the amount of the potential leak is now several KB, it seems worth back-patching as far as 9.2 where the previous fix landed. Per Coverity, which evidently is smarter than clang's static analyzer.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/dumputils.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c
index 55509866ff5..095c50770ba 100644
--- a/src/bin/pg_dump/dumputils.c
+++ b/src/bin/pg_dump/dumputils.c
@@ -500,6 +500,7 @@ buildACLCommands(const char *name, const char *subname,
const char *prefix, int remoteVersion,
PQExpBuffer sql)
{
+ bool ok = true;
char **aclitems;
int naclitems;
int i;
@@ -570,8 +571,8 @@ buildACLCommands(const char *name, const char *subname,
if (!parseAclItem(aclitems[i], type, name, subname, remoteVersion,
grantee, grantor, privs, privswgo))
{
- free(aclitems);
- return false;
+ ok = false;
+ break;
}
if (grantor->len == 0 && owner)
@@ -678,7 +679,7 @@ buildACLCommands(const char *name, const char *subname,
free(aclitems);
- return true;
+ return ok;
}
/*