diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2021-12-03 20:07:20 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2021-12-04 08:59:57 +0100 |
commit | c29dcfa2dd2e7467ea3b6b757880348884d8790d (patch) | |
tree | d3353da7e281a39e6edb2bde414c1bc228be5d6e /source/ap | |
parent | 66ba810196d8ce6f6da7df7931ce31e7303b8cf8 (diff) | |
download | current-c29dcfa2dd2e7467ea3b6b757880348884d8790d.tar.gz |
Fri Dec 3 20:07:20 UTC 202120211203200720
ap/rpm-4.16.1.3-x86_64-4.txz: Rebuilt.
Patched to handle non-compliant RPMs created by install4j. Thanks to alienBOB.
d/poke-1.4-x86_64-1.txz: Upgraded.
l/enchant-2.3.2-x86_64-1.txz: Upgraded.
l/freetype-2.11.1-x86_64-1.txz: Upgraded.
l/glib2-2.70.2-x86_64-1.txz: Upgraded.
n/lynx-2.9.0dev.10-x86_64-1.txz: Upgraded.
extra/php8/php8-8.1.0-x86_64-1.txz: Removed.
extra/php80/php80-8.0.13-x86_64-1.txz: Added.
extra/php81/php81-8.1.0-x86_64-1.txz: Added.
Diffstat (limited to 'source/ap')
-rw-r--r-- | source/ap/rpm/1688.patch | 87 | ||||
-rwxr-xr-x | source/ap/rpm/rpm.SlackBuild | 5 | ||||
-rw-r--r-- | source/ap/rpm/rpm.install4j.compat.diff | 53 |
3 files changed, 144 insertions, 1 deletions
diff --git a/source/ap/rpm/1688.patch b/source/ap/rpm/1688.patch new file mode 100644 index 00000000..255605b0 --- /dev/null +++ b/source/ap/rpm/1688.patch @@ -0,0 +1,87 @@ +From 05fbec89be5a3f582b51b8ca39030346b12cf1f6 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen <pmatilai@redhat.com> +Date: Tue, 25 May 2021 14:07:18 +0300 +Subject: [PATCH] Fix regression reading rpm v3 and other rare packages (#1635) + +Commit d6a86b5e69e46cc283b1e06c92343319beb42e21 introduced far stricter +checks on what tags are allowed in signature and main headers than rpm +had previously seen, and unsurprisingly this introduced some regressions +on less common cases: + +- On rpm v3 packages and some newer 3rd party created packages (such as + install4j < 9.0.2), RPMTAG_ARCHIVESIZE resides in the main header + to begin with +- In rpm 4.13 - 4.14, file IMA signatures were incorrectly placed in + the main header. + +As a quirk, permit the existence of RPMTAG_ARCHIVESIZE, +RPMTAG_FILESIGNATURES and RPMTAG_FILESIGNATURELENGTH in the main header +too provided that the corresponding signature tag is not there (so +they can reside in either but not both headers). + +Initial workaround patch by Demi Marie Obenour. + +Fixes: #1635 +--- + lib/package.c | 39 ++++++++++++++++++++++----------------- + 1 file changed, 22 insertions(+), 17 deletions(-) + +diff --git a/lib/package.c b/lib/package.c +index 7e6174690b..4b6b164979 100644 +--- a/lib/package.c ++++ b/lib/package.c +@@ -35,23 +35,24 @@ struct taglate_s { + rpmTagVal stag; + rpmTagVal xtag; + rpm_count_t count; ++ int quirk; + } const xlateTags[] = { +- { RPMSIGTAG_SIZE, RPMTAG_SIGSIZE, 1 }, +- { RPMSIGTAG_PGP, RPMTAG_SIGPGP, 0 }, +- { RPMSIGTAG_MD5, RPMTAG_SIGMD5, 16 }, +- { RPMSIGTAG_GPG, RPMTAG_SIGGPG, 0 }, +- /* { RPMSIGTAG_PGP5, RPMTAG_SIGPGP5, 0 }, */ /* long obsolete, dont use */ +- { RPMSIGTAG_PAYLOADSIZE, RPMTAG_ARCHIVESIZE, 1 }, +- { RPMSIGTAG_FILESIGNATURES, RPMTAG_FILESIGNATURES, 0 }, +- { RPMSIGTAG_FILESIGNATURELENGTH, RPMTAG_FILESIGNATURELENGTH, 1 }, +- { RPMSIGTAG_VERITYSIGNATURES, RPMTAG_VERITYSIGNATURES, 0 }, +- { RPMSIGTAG_VERITYSIGNATUREALGO, RPMTAG_VERITYSIGNATUREALGO, 1 }, +- { RPMSIGTAG_SHA1, RPMTAG_SHA1HEADER, 1 }, +- { RPMSIGTAG_SHA256, RPMTAG_SHA256HEADER, 1 }, +- { RPMSIGTAG_DSA, RPMTAG_DSAHEADER, 0 }, +- { RPMSIGTAG_RSA, RPMTAG_RSAHEADER, 0 }, +- { RPMSIGTAG_LONGSIZE, RPMTAG_LONGSIGSIZE, 1 }, +- { RPMSIGTAG_LONGARCHIVESIZE, RPMTAG_LONGARCHIVESIZE, 1 }, ++ { RPMSIGTAG_SIZE, RPMTAG_SIGSIZE, 1, 0 }, ++ { RPMSIGTAG_PGP, RPMTAG_SIGPGP, 0, 0 }, ++ { RPMSIGTAG_MD5, RPMTAG_SIGMD5, 16, 0 }, ++ { RPMSIGTAG_GPG, RPMTAG_SIGGPG, 0, 0 }, ++ /* { RPMSIGTAG_PGP5, RPMTAG_SIGPGP5, 0, 0 }, */ /* long obsolete, dont use */ ++ { RPMSIGTAG_PAYLOADSIZE, RPMTAG_ARCHIVESIZE, 1, 1 }, ++ { RPMSIGTAG_FILESIGNATURES, RPMTAG_FILESIGNATURES, 0, 1 }, ++ { RPMSIGTAG_FILESIGNATURELENGTH, RPMTAG_FILESIGNATURELENGTH, 1, 1 }, ++ { RPMSIGTAG_VERITYSIGNATURES, RPMTAG_VERITYSIGNATURES, 0, 0 }, ++ { RPMSIGTAG_VERITYSIGNATUREALGO, RPMTAG_VERITYSIGNATUREALGO, 1, 0 }, ++ { RPMSIGTAG_SHA1, RPMTAG_SHA1HEADER, 1, 0 }, ++ { RPMSIGTAG_SHA256, RPMTAG_SHA256HEADER, 1, 0 }, ++ { RPMSIGTAG_DSA, RPMTAG_DSAHEADER, 0, 0 }, ++ { RPMSIGTAG_RSA, RPMTAG_RSAHEADER, 0, 0 }, ++ { RPMSIGTAG_LONGSIZE, RPMTAG_LONGSIGSIZE, 1, 0 }, ++ { RPMSIGTAG_LONGARCHIVESIZE, RPMTAG_LONGARCHIVESIZE, 1, 0 }, + { 0 } + }; + +@@ -69,8 +70,12 @@ rpmTagVal headerMergeLegacySigs(Header h, Header sigh, char **msg) + + for (xl = xlateTags; xl->stag; xl++) { + /* There mustn't be one in the main header */ +- if (headerIsEntry(h, xl->xtag)) ++ if (headerIsEntry(h, xl->xtag)) { ++ /* Some tags may exist in either header, but never both */ ++ if (xl->quirk && !headerIsEntry(sigh, xl->stag)) ++ continue; + goto exit; ++ } + } + + rpmtdReset(&td); diff --git a/source/ap/rpm/rpm.SlackBuild b/source/ap/rpm/rpm.SlackBuild index ff61a2e2..45d4ad48 100755 --- a/source/ap/rpm/rpm.SlackBuild +++ b/source/ap/rpm/rpm.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=rpm VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -95,6 +95,9 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ +# Fix for non-compliant RPMs created by install4j: +zcat $CWD/rpm.install4j.compat.diff.gz | patch -p1 --verbose || exit 1 + # We need to do this since there's a bugfix for python3.10 detection in # the latest automake: autoreconf -vif diff --git a/source/ap/rpm/rpm.install4j.compat.diff b/source/ap/rpm/rpm.install4j.compat.diff new file mode 100644 index 00000000..1ceba163 --- /dev/null +++ b/source/ap/rpm/rpm.install4j.compat.diff @@ -0,0 +1,53 @@ +--- ./lib/package.c.orig 2021-03-22 05:05:07.312635983 -0500 ++++ ./lib/package.c 2021-11-30 12:48:31.637122803 -0600 +@@ -35,21 +35,22 @@ + rpmTagVal stag; + rpmTagVal xtag; + rpm_count_t count; ++ int quirk; + } const xlateTags[] = { +- { RPMSIGTAG_SIZE, RPMTAG_SIGSIZE, 1 }, +- { RPMSIGTAG_PGP, RPMTAG_SIGPGP, 0 }, +- { RPMSIGTAG_MD5, RPMTAG_SIGMD5, 16 }, +- { RPMSIGTAG_GPG, RPMTAG_SIGGPG, 0 }, +- /* { RPMSIGTAG_PGP5, RPMTAG_SIGPGP5, 0 }, */ /* long obsolete, dont use */ +- { RPMSIGTAG_PAYLOADSIZE, RPMTAG_ARCHIVESIZE, 1 }, +- { RPMSIGTAG_FILESIGNATURES, RPMTAG_FILESIGNATURES, 0 }, +- { RPMSIGTAG_FILESIGNATURELENGTH, RPMTAG_FILESIGNATURELENGTH, 1 }, +- { RPMSIGTAG_SHA1, RPMTAG_SHA1HEADER, 1 }, +- { RPMSIGTAG_SHA256, RPMTAG_SHA256HEADER, 1 }, +- { RPMSIGTAG_DSA, RPMTAG_DSAHEADER, 0 }, +- { RPMSIGTAG_RSA, RPMTAG_RSAHEADER, 0 }, +- { RPMSIGTAG_LONGSIZE, RPMTAG_LONGSIGSIZE, 1 }, +- { RPMSIGTAG_LONGARCHIVESIZE, RPMTAG_LONGARCHIVESIZE, 1 }, ++ { RPMSIGTAG_SIZE, RPMTAG_SIGSIZE, 1, 0 }, ++ { RPMSIGTAG_PGP, RPMTAG_SIGPGP, 0, 0 }, ++ { RPMSIGTAG_MD5, RPMTAG_SIGMD5, 16, 0 }, ++ { RPMSIGTAG_GPG, RPMTAG_SIGGPG, 0, 0 }, ++ /* { RPMSIGTAG_PGP5, RPMTAG_SIGPGP5, 0, 0 }, */ /* long obsolete, dont use */ ++ { RPMSIGTAG_PAYLOADSIZE, RPMTAG_ARCHIVESIZE, 1, 1 }, ++ { RPMSIGTAG_FILESIGNATURES, RPMTAG_FILESIGNATURES, 0, 1 }, ++ { RPMSIGTAG_FILESIGNATURELENGTH, RPMTAG_FILESIGNATURELENGTH, 1, 1 }, ++ { RPMSIGTAG_SHA1, RPMTAG_SHA1HEADER, 1, 0 }, ++ { RPMSIGTAG_SHA256, RPMTAG_SHA256HEADER, 1, 0 }, ++ { RPMSIGTAG_DSA, RPMTAG_DSAHEADER, 0, 0 }, ++ { RPMSIGTAG_RSA, RPMTAG_RSAHEADER, 0, 0 }, ++ { RPMSIGTAG_LONGSIZE, RPMTAG_LONGSIGSIZE, 1, 0 }, ++ { RPMSIGTAG_LONGARCHIVESIZE, RPMTAG_LONGARCHIVESIZE, 1, 0 }, + { 0 } + }; + +@@ -67,8 +68,12 @@ + + for (xl = xlateTags; xl->stag; xl++) { + /* There mustn't be one in the main header */ +- if (headerIsEntry(h, xl->xtag)) ++ if (headerIsEntry(h, xl->xtag)) { ++ /* Some tags may exist in either header, but never both */ ++ if (xl->quirk && !headerIsEntry(sigh, xl->stag)) ++ continue; + goto exit; ++ } + } + + rpmtdReset(&td); |