From: Tom Lane Date: Sun, 3 Jun 2012 15:52:52 +0000 (-0400) Subject: Fix memory leaks in failure paths in buildACLCommands and parseAclItem. X-Git-Tag: REL9_2_BETA3~136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d73b7f973db5ec7e44813141741d3e0d318eef69;p=postgresql Fix memory leaks in failure paths in buildACLCommands and parseAclItem. This is currently only cosmetic, since all the call sites just curl up and die in event of a failure return. It might be important for some future use-case, though, and in any case it quiets warnings from the clang static analyzer (as reported by Anna Zaks). Josh Kupershmidt --- diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index 623c250eb8..6d10970e7c 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -600,7 +600,10 @@ buildACLCommands(const char *name, const char *subname, { if (!parseAclItem(aclitems[i], type, name, subname, remoteVersion, grantee, grantor, privs, privswgo)) + { + free(aclitems); return false; + } if (grantor->len == 0 && owner) printfPQExpBuffer(grantor, "%s", owner); @@ -789,7 +792,10 @@ parseAclItem(const char *item, const char *type, /* user or group name is string up to = */ eqpos = copyAclUserName(grantee, buf); if (*eqpos != '=') + { + free(buf); return false; + } /* grantor may be listed after / */ slpos = strchr(eqpos + 1, '/'); @@ -798,7 +804,10 @@ parseAclItem(const char *item, const char *type, *slpos++ = '\0'; slpos = copyAclUserName(grantor, slpos); if (*slpos != '\0') + { + free(buf); return false; + } } else resetPQExpBuffer(grantor);