diff options
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | lib/psm.c | 10 | ||||
-rw-r--r-- | lib/transaction.c | 10 | ||||
-rw-r--r-- | rpmdb/rpmdb.c | 4 |
4 files changed, 16 insertions, 11 deletions
@@ -6,6 +6,9 @@ - don't use error string after gzclose (Dmitry V. Levin). - only internal Berkeley db from now on. - revive "make dist". + - fix: added index size wrong iff _transaction_color != 0/3 (#103865). + - fix: escape '+' in regex patterns through RPMMIRE_DEFAULT (#103851). + - RPMMIRE_DEFAULT is overkill, use RPMMIRE_STRCMP instead (#103851). 4.2.1 -> 4.2.2: - unify signal handling in librpmio, use condvar to deliver signal. @@ -1210,16 +1210,16 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage) assert(psm->mi == NULL); psm->mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(psm->te), 0); - xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_EPOCH, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(psm->te)); - xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_VERSION, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(psm->te)); - xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_RELEASE, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, rpmteR(psm->te)); if (tscolor) { - xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_ARCH, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_ARCH, RPMMIRE_STRCMP, rpmteA(psm->te)); - xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_OS, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_OS, RPMMIRE_STRCMP, rpmteO(psm->te)); } diff --git a/lib/transaction.c b/lib/transaction.c index a0e147d7e..4fdeab547 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -1037,16 +1037,16 @@ rpmMessage(RPMMESS_DEBUG, _("sanity checking %d elements\n"), rpmtsNElements(ts) if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_REPLACEPKG)) { mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(p), 0); - xx = rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(p)); - xx = rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(p)); - xx = rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, rpmteR(p)); if (tscolor) { - xx = rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_STRCMP, rpmteA(p)); - xx = rpmdbSetIteratorRE(mi, RPMTAG_OS, RPMMIRE_DEFAULT, + xx = rpmdbSetIteratorRE(mi, RPMTAG_OS, RPMMIRE_STRCMP, rpmteO(p)); } diff --git a/rpmdb/rpmdb.c b/rpmdb/rpmdb.c index 3532be9ee..10dfd27a5 100644 --- a/rpmdb/rpmdb.c +++ b/rpmdb/rpmdb.c @@ -1747,12 +1747,13 @@ static /*@only@*/ char * mireDup(rpmTag tag, rpmMireMode *modep, nb = strlen(pattern) + sizeof("^$"); /* Find no. of bytes needed for pattern. */ - /* periods are escaped, splats become '.*' */ + /* periods and plusses are escaped, splats become '.*' */ c = '\0'; brackets = 0; for (s = pattern; *s != '\0'; s++) { switch (*s) { case '.': + case '+': case '*': if (!brackets) nb++; /*@switchbreak@*/ break; @@ -1779,6 +1780,7 @@ static /*@only@*/ char * mireDup(rpmTag tag, rpmMireMode *modep, for (s = pattern; *s != '\0'; s++, t++) { switch (*s) { case '.': + case '+': if (!brackets) *t++ = '\\'; /*@switchbreak@*/ break; case '*': |