]> granicus.if.org Git - postgresql/commitdiff
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);