mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
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:
parent
8fcbfea788
commit
d73b7f973d
@ -600,7 +600,10 @@ buildACLCommands(const char *name, const char *subname,
|
|||||||
{
|
{
|
||||||
if (!parseAclItem(aclitems[i], type, name, subname, remoteVersion,
|
if (!parseAclItem(aclitems[i], type, name, subname, remoteVersion,
|
||||||
grantee, grantor, privs, privswgo))
|
grantee, grantor, privs, privswgo))
|
||||||
|
{
|
||||||
|
free(aclitems);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (grantor->len == 0 && owner)
|
if (grantor->len == 0 && owner)
|
||||||
printfPQExpBuffer(grantor, "%s", owner);
|
printfPQExpBuffer(grantor, "%s", owner);
|
||||||
@ -789,7 +792,10 @@ parseAclItem(const char *item, const char *type,
|
|||||||
/* user or group name is string up to = */
|
/* user or group name is string up to = */
|
||||||
eqpos = copyAclUserName(grantee, buf);
|
eqpos = copyAclUserName(grantee, buf);
|
||||||
if (*eqpos != '=')
|
if (*eqpos != '=')
|
||||||
|
{
|
||||||
|
free(buf);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* grantor may be listed after / */
|
/* grantor may be listed after / */
|
||||||
slpos = strchr(eqpos + 1, '/');
|
slpos = strchr(eqpos + 1, '/');
|
||||||
@ -798,7 +804,10 @@ parseAclItem(const char *item, const char *type,
|
|||||||
*slpos++ = '\0';
|
*slpos++ = '\0';
|
||||||
slpos = copyAclUserName(grantor, slpos);
|
slpos = copyAclUserName(grantor, slpos);
|
||||||
if (*slpos != '\0')
|
if (*slpos != '\0')
|
||||||
|
{
|
||||||
|
free(buf);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
resetPQExpBuffer(grantor);
|
resetPQExpBuffer(grantor);
|
||||||
|
Loading…
Reference in New Issue
Block a user