From: Panu Matilainen Date: Mon, 30 May 2011 08:45:41 +0000 (+0300) Subject: Remove possibility of abusing freed iterator by moving to local scope X-Git-Tag: rpm-4.10.0-beta1~484 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e996d917eec167d12f158af7156ebc8c40825a8f;p=platform%2Fupstream%2Frpm.git Remove possibility of abusing freed iterator by moving to local scope - Eliminates another dead NULL-assignment + makes it "safer" --- diff --git a/lib/transaction.c b/lib/transaction.c index 3f1bc0f..a6794e4 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -1037,7 +1037,6 @@ static rpmps checkProblems(rpmts ts) /* XXX Only added packages need be checked. */ rpmlog(RPMLOG_DEBUG, "sanity checking %d elements\n", rpmtsNElements(ts)); while ((p = rpmtsiNext(pi, TR_ADDED)) != NULL) { - rpmdbMatchIterator mi; if (!(probFilter & RPMPROB_FILTER_IGNOREARCH) && badArch(rpmteA(p))) rpmteAddProblem(p, RPMPROB_BADARCH, rpmteA(p), NULL, 0); @@ -1047,14 +1046,16 @@ static rpmps checkProblems(rpmts ts) if (!(probFilter & RPMPROB_FILTER_OLDPACKAGE)) { Header h; + rpmdbMatchIterator mi; mi = rpmtsInitIterator(ts, RPMDBI_NAME, rpmteN(p), 0); while ((h = rpmdbNextIterator(mi)) != NULL) ensureOlder(p, h); - mi = rpmdbFreeIterator(mi); + rpmdbFreeIterator(mi); } if (!(probFilter & RPMPROB_FILTER_REPLACEPKG)) { Header h; + rpmdbMatchIterator mi; mi = rpmtsInitIterator(ts, RPMDBI_NAME, rpmteN(p), 0); rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(p)); rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(p)); @@ -1068,7 +1069,7 @@ static rpmps checkProblems(rpmts ts) rpmteAddProblem(p, RPMPROB_PKG_INSTALLED, NULL, NULL, headerGetInstance(h)); } - mi = rpmdbFreeIterator(mi); + rpmdbFreeIterator(mi); } } rpmtsiFree(pi);