Fix memory leaks in failure paths in buildACLCommands and parseAclItem.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Jun 2012 15:52:52 +0000 (11:52 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Jun 2012 15:52:52 +0000 (11:52 -0400)
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

src/bin/pg_dump/dumputils.c

index 623c250eb895ef6ad0bbd4098664086064192689..6d10970e7c81f005e08169ff854d5e1bdb5f124e 100644 (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);