Hi,

I'm using rpm 5.4.16, it seems that --nosignature has been disabled
as system.h shows:
#undef SUPPORT_NOSIGNATURES

So that rpm --nosignature doesn't work, and when many processes(for example,
30) of "rpm -qp --nosignature file.rpm" are running, there might be race
issues since they are trying to get locks for the db, and they may hang up.
I've made a rough patch to make --nosignature work, they processes can
run well without hang up. Here is the patch, and I will send it formally
if you are fine with it.


Subject: [PATCH] system.h/query.c: support nosignature

* Define SUPPORT_NOSIGNATURES to 1 in system.h
* !QVA_ISSET(qva->qva_flags, SIGNATURE) -> QVA_ISSET(qva->qva_flags, SIGNATURE),
  otherwise, when use --nosignature would read database and verify
  signature, this is not expected.

Upstream-Status: Pending

Signed-off-by: Robert Yang <liezhi.y...@windriver.com>
---
 lib/query.c | 6 +++---
 system.h    | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/query.c b/lib/query.c
index 50a7453..b761d76 100644
--- a/lib/query.c
+++ b/lib/query.c
@@ -954,19 +954,19 @@ JBJDEBUG((stderr, "--> %s(%p,%p,%p)\n", __FUNCTION__, ts, qva, argv));
     vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_query}");
     vsflags = (rpmVSFlags) 0;  /* XXX FIXME: ignore default disablers. */
 #if defined(SUPPORT_NOSIGNATURES)
-    if (!QVA_ISSET(qva->qva_flags, DIGEST)) {
+    if (QVA_ISSET(qva->qva_flags, DIGEST)) {
    VSF_SET(vsflags, NOSHA1HEADER);
    VSF_SET(vsflags, NOMD5HEADER);
    VSF_SET(vsflags, NOSHA1);
    VSF_SET(vsflags, NOMD5);
     }
-    if (!QVA_ISSET(qva->qva_flags, SIGNATURE)) {
+    if (QVA_ISSET(qva->qva_flags, SIGNATURE)) {
    VSF_SET(vsflags, NODSAHEADER);
    VSF_SET(vsflags, NORSAHEADER);
    VSF_SET(vsflags, NODSA);
    VSF_SET(vsflags, NORSA);
     }
-    if (!QVA_ISSET(qva->qva_flags, HDRCHK)) {
+    if (QVA_ISSET(qva->qva_flags, HDRCHK)) {
    VSF_SET(vsflags, NOHDRCHK);
     }
     VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */
diff --git a/system.h b/system.h
index 2ff8906..ad4619a 100644
--- a/system.h
+++ b/system.h
@@ -787,9 +787,9 @@ static inline const char *rcsid(const char *p) {   #define 
SUPPORT_I18NSTRING_TYPE    1

 /**
- * Eliminate signature/digest disablers.
+ * Signature/digest disablers.
  */
-#undef SUPPORT_NOSIGNATURES
+#define SUPPORT_NOSIGNATURES 1

 /**
  * Permit ar(1) payloads. Disabled while rpmio/iosm.c is under development.


--
Thanks

Robert
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to