diff options
author | Mariano Lopez <mariano.lopez@linux.intel.com> | 2015-12-29 10:25:02 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-01-11 23:23:16 +0000 |
commit | da7aa183f94adc1d0fff5bb81e827c584f9938ec (patch) | |
tree | df7a0e80d3a04209958b98d7926b2412f614f43b | |
parent | 5c535bf45fc324e31b42364c99d6fffa00167995 (diff) | |
download | openembedded-core-da7aa183f94adc1d0fff5bb81e827c584f9938ec.tar.gz openembedded-core-da7aa183f94adc1d0fff5bb81e827c584f9938ec.tar.bz2 openembedded-core-da7aa183f94adc1d0fff5bb81e827c584f9938ec.zip |
rpmresolve.c: Fix unfreed pointers that keep DB opened
There are some unfreed rpmmi pointers in printDepList()
function; this happens when the package have null as
the requirement.
This patch fixes these unfreed pointers and add small
changes to keep consistency with some variables.
[YOCTO #8028]
Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r-- | meta/recipes-devtools/rpm/rpmresolve/rpmresolve.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/meta/recipes-devtools/rpm/rpmresolve/rpmresolve.c b/meta/recipes-devtools/rpm/rpmresolve/rpmresolve.c index 7f4caf9886..c0b4d567fb 100644 --- a/meta/recipes-devtools/rpm/rpmresolve/rpmresolve.c +++ b/meta/recipes-devtools/rpm/rpmresolve/rpmresolve.c @@ -42,7 +42,7 @@ FILE *outf; int getPackageStr(rpmts ts, const char *NVRA, rpmTag tag, char **value) { int rc = -1; - rpmmi mi = rpmtsInitIterator(ts, RPMTAG_NVRA, NVRA, 0); + rpmmi mi = rpmmiInit(rpmtsGetRdb(ts), RPMTAG_NVRA, NVRA, 0); Header h; if ((h = rpmmiNext(mi)) != NULL) { HE_t he = (HE_t) memset(alloca(sizeof(*he)), 0, sizeof(*he)); @@ -225,7 +225,7 @@ int processPackages(rpmts *ts, int tscount, const char *packagelistfn, int ignor int lookupProvider(rpmts ts, const char *req, char **provider) { int rc = 0; - rpmmi provmi = rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, req, 0); + rpmmi provmi = rpmmiInit(rpmtsGetRdb(ts), RPMTAG_PROVIDENAME, req, 0); if(provmi) { Header h; if ((h = rpmmiNext(provmi)) != NULL) { @@ -266,7 +266,7 @@ int printDepList(rpmts *ts, int tscount) HE_t he = (HE_t) memset(alloca(sizeof(*he)), 0, sizeof(*he)); int nkeys = argvCount(keys); for(i=0; i<nkeys; i++) { - rpmmi mi = rpmtsInitIterator(ts[0], RPMTAG_NVRA, keys[i], 0); + rpmmi mi = rpmmiInit(db, RPMTAG_NVRA, keys[i], 0); Header h; if ((h = rpmmiNext(mi)) != NULL) { /* Get name of package */ @@ -280,6 +280,8 @@ int printDepList(rpmts *ts, int tscount) printf("DEBUG: %s requires null\n", name); } rc = 0; + free(name); + (void)rpmmiFree(mi); continue; } ARGV_t reqs = (ARGV_t)he->p.ptr; @@ -412,7 +414,7 @@ int main(int argc, char **argv) } for(i=0; i<tscount; i++) - (void) rpmtsCloseDB(ts[i]); + (void)rpmtsFree(ts[i]); free(ts); if( outfile ) { |