From 21d527f6c7111c067fc88a6ef76d201c7a653936 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 22 Sep 2009 14:52:57 +0300 Subject: [PATCH] Fix endless loop on RPMDBI_PACKAGES iteration when offset specified --- lib/rpmdb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/rpmdb.c b/lib/rpmdb.c index f15c446..f6028e1 100644 --- a/lib/rpmdb.c +++ b/lib/rpmdb.c @@ -2038,8 +2038,10 @@ top: } while (mi->mi_offset == 0); /* If next header is identical, return it now. */ - if (mi->mi_prevoffset && mi->mi_offset == mi->mi_prevoffset) - return mi->mi_h; + if (mi->mi_prevoffset && mi->mi_offset == mi->mi_prevoffset) { + /* ...but rpmdb record numbers are unique, avoid endless loop */ + return (mi->mi_rpmtag == RPMDBI_PACKAGES) ? NULL : mi->mi_h; + } /* Retrieve next header blob for index iterator. */ if (uh == NULL) { -- 2.7.4