7bcd4c2489
BDB will segfault on multiple failed attempts of certain kind, something unexpected fails when selinux says no. Stop on first failure instead. On a related note, fix double rpmdb open failure from lazy keyring open recursing back to the same lazy open.
43 lines
1.5 KiB
Diff
43 lines
1.5 KiB
Diff
From 3cb955b77f07c70ba01d765aa6377908847608f5 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <3cb955b77f07c70ba01d765aa6377908847608f5.1606726599.git.pmatilai@redhat.com>
|
|
In-Reply-To: <fd054a40b2ba005571455d749de0423975e77651.1606726599.git.pmatilai@redhat.com>
|
|
References: <fd054a40b2ba005571455d749de0423975e77651.1606726599.git.pmatilai@redhat.com>
|
|
From: Panu Matilainen <pmatilai@redhat.com>
|
|
Date: Mon, 23 Nov 2020 13:46:14 +0200
|
|
Subject: [PATCH 2/2] Only attempt loading the keyring once the rpmdb is open
|
|
|
|
When we do lazy rpmdb open in rpmtsInitIterator(), we also do a lazy
|
|
keyring open. Except that since the keyring typically lives in the rpmdb,
|
|
we PROBABLY should try open the database first. One of those "WTF I've
|
|
been smoking" moments, lol.
|
|
|
|
Prevents an ugly if mostly harmless double error anything we can't open
|
|
the database for one reason or another.
|
|
---
|
|
lib/rpmts.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/lib/rpmts.c b/lib/rpmts.c
|
|
index 9fa9cb0e2..8c8ae420a 100644
|
|
--- a/lib/rpmts.c
|
|
+++ b/lib/rpmts.c
|
|
@@ -177,12 +177,12 @@ rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag,
|
|
if (ts == NULL)
|
|
return NULL;
|
|
|
|
- if (ts && ts->keyring == NULL)
|
|
- loadKeyring(ts);
|
|
-
|
|
if (ts->rdb == NULL && rpmtsOpenDB(ts, ts->dbmode))
|
|
return NULL;
|
|
|
|
+ if (ts->keyring == NULL)
|
|
+ loadKeyring(ts);
|
|
+
|
|
/* Parse out "N(EVR)" tokens from a label key if present */
|
|
if (rpmtag == RPMDBI_LABEL && keyp != NULL && strchr(keyp, '(')) {
|
|
const char *se, *s = keyp;
|
|
--
|
|
2.28.0
|
|
|