Fix memleak on signature checking failure
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 10 Mar 2009 09:03:08 +0000 (11:03 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 3 Apr 2009 11:01:57 +0000 (14:01 +0300)
- early exit from header iteration loop could previously leak from unfreed
  buf and header iterator
(cherry picked from commit 05e16d415492f4925782e3fcf6ef155cbdf124c3)

lib/rpmchecksig.c

index 703dee5..f7bd6dc 100644 (file)
@@ -562,7 +562,7 @@ int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd,
     pgpDig dig = NULL;
     pgpDigParams sigp;
     Header sigh = NULL;
-    HeaderIterator hi;
+    HeaderIterator hi = NULL;
     char * msg;
     int res = 0;
     int xx;
@@ -759,7 +759,6 @@ int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd,
        free(msg);
        buf = b;
     }
-    hi = headerFreeIterator(hi);
 
     res += failed;
 
@@ -775,12 +774,13 @@ int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd,
               untrustedKeys ? untrustedKeys : "",
               untrustedKeys ? _(")") : "");
     }
-    free(buf);
     free(missingKeys);
     free(untrustedKeys);
 
 exit:
+    free(buf);
     sigh = rpmFreeSignature(sigh);
+    hi = headerFreeIterator(hi);
     rpmKeyringFree(keyring);
     pgpFreeDig(dig);
     return res;