summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2011-05-25 14:26:51 +0300
committerPanu Matilainen <pmatilai@redhat.com>2011-05-25 14:26:51 +0300
commit563f7c0dad5a748e1861f92087044d780787c766 (patch)
treea9cb6825f473e3fc8ade8190cbdd484ef6f177b2
parent099f09de45cb7c241980da4e8cde7de61f5c1936 (diff)
downloadrpm-563f7c0dad5a748e1861f92087044d780787c766.tar.gz
rpm-563f7c0dad5a748e1861f92087044d780787c766.tar.bz2
rpm-563f7c0dad5a748e1861f92087044d780787c766.zip
Permit %verifyscript from non-installed packages
- Verification from non-installed packages can be useful sometimes: http://lists.rpm.org/pipermail/rpm-maint/2011-May/003015.html - %verifyscript is unlike all other scriptlets so might as well take some shortcuts and bypass rpmteProcess() & all, just create a lone rpmte, force the header we got and call rpmpsmRun() directly on it, bypassing rpmteProcess() which is only an unnecessary complication here (based on patch by Michael Schroeder)
-rw-r--r--lib/verify.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/verify.c b/lib/verify.c
index 8c8d1026e..28a031139 100644
--- a/lib/verify.c
+++ b/lib/verify.c
@@ -262,12 +262,13 @@ static int rpmVerifyScript(rpmts ts, Header h)
if (headerIsEntry(h, RPMTAG_VERIFYSCRIPT)) {
/* fake up a erasure transaction element */
- (void) rpmtsAddEraseElement(ts, h, -1);
+ rpmte p = rpmteNew(ts, h, TR_REMOVED, NULL, NULL);
+ rpmteSetHeader(p, h);
- rc = (rpmteProcess(rpmtsElement(ts, 0), PKG_VERIFY) != RPMRC_OK);
+ rc = (rpmpsmRun(ts, p, PKG_VERIFY) != RPMRC_OK);
/* clean up our fake transaction bits */
- rpmtsEmpty(ts);
+ rpmteFree(p);
}
return rc;