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
This commit is contained in:
Tom Lane 2012-06-03 11:52:52 -04:00
parent 8fcbfea788
commit d73b7f973d
1 changed files with 9 additions and 0 deletions

View File

@ -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);