sync patches from upstream
This commit is contained in:
parent
96149841b7
commit
7d2f7c2cdb
@ -0,0 +1,61 @@
|
|||||||
|
From 470498bd5a51f8d98ae8e721beea58ef81c19a51 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Festi <ffesti@redhat.com>
|
||||||
|
Date: Wed, 22 Sep 2021 16:10:53 +0200
|
||||||
|
Subject: [PATCH] Check file iterator for being NULL consistently
|
||||||
|
|
||||||
|
No point in allowing NULL only for one of the arguments.
|
||||||
|
|
||||||
|
Thanks to ex0z3 (https://github.com/ex0z3) for reporting!
|
||||||
|
|
||||||
|
Resolves: #1782
|
||||||
|
---
|
||||||
|
lib/rpmfi.c | 13 ++++++-----
|
||||||
|
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rpmfi.c b/lib/rpmfi.c
|
||||||
|
index c6c9699f6..b67680c17 100644
|
||||||
|
--- a/lib/rpmfi.c
|
||||||
|
+++ b/lib/rpmfi.c
|
||||||
|
@@ -735,7 +735,7 @@ uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int ** files)
|
||||||
|
|
||||||
|
uint32_t rpmfiFLinks(rpmfi fi, const int ** files)
|
||||||
|
{
|
||||||
|
- return rpmfilesFLinks(fi->files, fi ? fi->i : -1, files);
|
||||||
|
+ return rpmfilesFLinks(fi ? fi->files : NULL, fi ? fi->i : -1, files);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t rpmfilesFNlink(rpmfiles fi, int ix)
|
||||||
|
@@ -1862,17 +1862,17 @@ const char * rpmfiOFN(rpmfi fi)
|
||||||
|
|
||||||
|
const unsigned char * rpmfiFDigest(rpmfi fi, int *algo, size_t *len)
|
||||||
|
{
|
||||||
|
- return rpmfilesFDigest(fi->files, fi ? fi->i : -1, algo, len);
|
||||||
|
+ return rpmfilesFDigest(fi ? fi->files : NULL, fi ? fi->i : -1, algo, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
const unsigned char * rpmfiFSignature(rpmfi fi, size_t *len)
|
||||||
|
{
|
||||||
|
- return rpmfilesFSignature(fi->files, fi ? fi->i : -1, len);
|
||||||
|
+ return rpmfilesFSignature(fi ? fi->files : NULL, fi ? fi->i : -1, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t rpmfiFDepends(rpmfi fi, const uint32_t ** fddictp)
|
||||||
|
{
|
||||||
|
- return rpmfilesFDepends(fi->files, fi ? fi->i : -1, fddictp);
|
||||||
|
+ return rpmfilesFDepends(fi ? fi->files : NULL, fi ? fi->i : -1, fddictp);
|
||||||
|
}
|
||||||
|
|
||||||
|
int rpmfiStat(rpmfi fi, int flags, struct stat *sb)
|
||||||
|
@@ -1983,7 +1983,8 @@ int rpmfiStat(rpmfi fi, int flags, struct stat *sb)
|
||||||
|
|
||||||
|
int rpmfiCompare(const rpmfi afi, const rpmfi bfi)
|
||||||
|
{
|
||||||
|
- return rpmfilesCompare(afi->files, afi ? afi->i : -1, bfi->files, bfi ? bfi->i : -1);
|
||||||
|
+ return rpmfilesCompare(afi ? afi->files : NULL, afi ? afi->i : -1,
|
||||||
|
+ bfi ? bfi->files : NULL, bfi ? bfi->i : -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
rpmVerifyAttrs rpmfiVerify(rpmfi fi, rpmVerifyAttrs omitMask)
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
27
backport-Close-file-before-replacing-signed.patch
Normal file
27
backport-Close-file-before-replacing-signed.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From 9b4c50dd67c337f2d3c927cdd01ae4433bb08b61 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Evgeniy Taishev <e.taishev@omp.ru>
|
||||||
|
Date: Mon, 17 Jan 2022 22:07:13 +0300
|
||||||
|
Subject: [PATCH] Close file before replacing signed
|
||||||
|
|
||||||
|
---
|
||||||
|
sign/rpmgensig.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/sign/rpmgensig.c b/sign/rpmgensig.c
|
||||||
|
index e88f9b748..b8c68cee9 100644
|
||||||
|
--- a/sign/rpmgensig.c
|
||||||
|
+++ b/sign/rpmgensig.c
|
||||||
|
@@ -695,6 +695,10 @@ static int rpmSign(const char *rpm, int deleting, int flags)
|
||||||
|
if (copyFile(&fd, rpm, &ofd, trpm) == 0) {
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
+ /* File must be closed before deletion due to different file locking in some file systems*/
|
||||||
|
+ if (fd) (void) closeFile(&fd);
|
||||||
|
+ if (ofd) (void) closeFile(&ofd);
|
||||||
|
+
|
||||||
|
/* Move final target into place, restore file permissions. */
|
||||||
|
if (stat(rpm, &st) == 0 && unlink(rpm) == 0 &&
|
||||||
|
rename(trpm, rpm) == 0 && chmod(rpm, st.st_mode) == 0) {
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
39
backport-Don-t-segfault-on-missing-priority-tag.patch
Normal file
39
backport-Don-t-segfault-on-missing-priority-tag.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From fd57fc716231c8296d340fdb4c0f6eac176f7f7c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Festi <ffesti@redhat.com>
|
||||||
|
Date: Fri, 20 Aug 2021 15:14:16 +0200
|
||||||
|
Subject: [PATCH] Don't segfault on missing priority tag
|
||||||
|
|
||||||
|
Resolves: #1636
|
||||||
|
Related: #1638
|
||||||
|
---
|
||||||
|
lib/rpmtriggers.c | 7 +++++--
|
||||||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rpmtriggers.c b/lib/rpmtriggers.c
|
||||||
|
index fc809a65e..d541974e8 100644
|
||||||
|
--- a/lib/rpmtriggers.c
|
||||||
|
+++ b/lib/rpmtriggers.c
|
||||||
|
@@ -517,7 +517,8 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, rpmsenseFlags sense,
|
||||||
|
if (matchFunc(ts, te, pfx, sense)) {
|
||||||
|
for (i = 0; i < rpmdbIndexIteratorNumPkgs(ii); i++) {
|
||||||
|
struct rpmtd_s priorities;
|
||||||
|
- unsigned int priority;
|
||||||
|
+ unsigned int priority = 0;
|
||||||
|
+ unsigned int *priority_ptr;
|
||||||
|
unsigned int offset = rpmdbIndexIteratorPkgOffset(ii, i);
|
||||||
|
unsigned int tix = rpmdbIndexIteratorTagNum(ii, i);
|
||||||
|
|
||||||
|
@@ -535,7 +536,9 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, rpmsenseFlags sense,
|
||||||
|
trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts), offset);
|
||||||
|
headerGet(trigH, priorityTag, &priorities, HEADERGET_MINMEM);
|
||||||
|
rpmtdSetIndex(&priorities, tix);
|
||||||
|
- priority = *rpmtdGetUint32(&priorities);
|
||||||
|
+ priority_ptr = rpmtdGetUint32(&priorities);
|
||||||
|
+ if (priority_ptr)
|
||||||
|
+ priority = *priority_ptr;
|
||||||
|
headerFree(trigH);
|
||||||
|
|
||||||
|
/* Store file trigger in array */
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
From 86f593d5135b00a9dbf7dc6d5efc8b341002aa08 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Fri, 16 Apr 2021 14:06:00 +0300
|
||||||
|
Subject: [PATCH] Ensure database creation on initial installation
|
||||||
|
|
||||||
|
Disabling implicit database creation on read-only handles in commit
|
||||||
|
afbc2b07839c9ffe9f274f3a4bc2395c76d65472 broke number of handy
|
||||||
|
use-cases such as install to an empty chroot directory, both with
|
||||||
|
rpm itself and dnf/yum at least, probably others too.
|
||||||
|
|
||||||
|
This minimally resurrects the desired part of the behavior: if people are
|
||||||
|
asking us to install something, creating a missing database is probably
|
||||||
|
okay to create without requiring an explicit --initdb action first.
|
||||||
|
It'll still spit some ugly errors from trying to load the keyring but
|
||||||
|
at least it'll work. The harmless errors we can try to deal with
|
||||||
|
separately later on.
|
||||||
|
---
|
||||||
|
lib/depends.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/depends.c b/lib/depends.c
|
||||||
|
index 28a4a784d..ed5994290 100644
|
||||||
|
--- a/lib/depends.c
|
||||||
|
+++ b/lib/depends.c
|
||||||
|
@@ -4,6 +4,8 @@
|
||||||
|
|
||||||
|
#include "system.h"
|
||||||
|
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+
|
||||||
|
#include <rpm/rpmlib.h> /* rpmVersionCompare, rpmlib provides */
|
||||||
|
#include <rpm/rpmtag.h>
|
||||||
|
#include <rpm/rpmlog.h>
|
||||||
|
@@ -414,6 +416,10 @@ static int addPackage(rpmts ts, Header h,
|
||||||
|
if (isSource)
|
||||||
|
op = RPMTE_INSTALL;
|
||||||
|
|
||||||
|
+ /* Ensure database creation on initial installs */
|
||||||
|
+ if (!isSource && rpmtsGetDBMode(ts) == O_RDONLY)
|
||||||
|
+ rpmtsSetDBMode(ts, (O_RDWR|O_CREAT));
|
||||||
|
+
|
||||||
|
/* Do lazy (readonly?) open of rpm database for upgrades. */
|
||||||
|
if (op != RPMTE_INSTALL && rpmtsGetRdb(ts) == NULL && rpmtsGetDBMode(ts) != -1) {
|
||||||
|
if ((ec = rpmtsOpenDB(ts, rpmtsGetDBMode(ts))) != 0)
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
25
backport-Fix-__cplusplus-misspelled-as-_cplusplus.patch
Normal file
25
backport-Fix-__cplusplus-misspelled-as-_cplusplus.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 989d7c593c7ab12e17ea8f486856bafac6a1ae37 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Pentchev <roam@ringlet.net>
|
||||||
|
Date: Sat, 27 Nov 2021 00:43:41 +0200
|
||||||
|
Subject: [PATCH] Fix __cplusplus misspelled as _cplusplus.
|
||||||
|
|
||||||
|
---
|
||||||
|
sign/rpmsignfiles.h | 2 +-
|
||||||
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sign/rpmsignfiles.h b/sign/rpmsignfiles.h
|
||||||
|
index 2ff623cdf..a21a00612 100644
|
||||||
|
--- a/sign/rpmsignfiles.h
|
||||||
|
+++ b/sign/rpmsignfiles.h
|
||||||
|
@@ -19,7 +19,7 @@ extern "C" {
|
||||||
|
RPM_GNUC_INTERNAL
|
||||||
|
rpmRC rpmSignFiles(Header sigh, Header h, const char *key, char *keypass);
|
||||||
|
|
||||||
|
-#ifdef _cplusplus
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
From 5c5cd9f30b31f0255a484f7d2e3f9cfacc0ec3bf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Wed, 15 Dec 2021 10:01:41 +0200
|
||||||
|
Subject: [PATCH] Fix a memleak in ndb from opened but not closed dbis.
|
||||||
|
|
||||||
|
Fixes: #1861
|
||||||
|
---
|
||||||
|
lib/backend/ndb/glue.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/backend/ndb/glue.c b/lib/backend/ndb/glue.c
|
||||||
|
index 7ba3056be..d528ebcea 100644
|
||||||
|
--- a/lib/backend/ndb/glue.c
|
||||||
|
+++ b/lib/backend/ndb/glue.c
|
||||||
|
@@ -77,7 +77,7 @@ static int ndb_Close(dbiIndex dbi, unsigned int flags)
|
||||||
|
}
|
||||||
|
if (rdb->db_dbenv)
|
||||||
|
closeEnv(rdb);
|
||||||
|
- dbi->dbi_db = 0;
|
||||||
|
+ dbiFree(dbi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
34
backport-Fix-hash-context-leak.patch
Normal file
34
backport-Fix-hash-context-leak.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From 6e9531430d70fe80b67782ed57f1526aec9ed711 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Justus Winter <justus@sequoia-pgp.org>
|
||||||
|
Date: Thu, 28 Oct 2021 13:32:22 +0200
|
||||||
|
Subject: [PATCH] Fix hash context leak
|
||||||
|
|
||||||
|
The hash context is duplicated unconditionally, but there is an
|
||||||
|
execution path exiting the function without it being finalized.
|
||||||
|
---
|
||||||
|
rpmio/rpmpgp.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
|
||||||
|
index 861f6704c..1e4f66782 100644
|
||||||
|
--- a/rpmio/rpmpgp.c
|
||||||
|
+++ b/rpmio/rpmpgp.c
|
||||||
|
@@ -1310,6 +1310,7 @@ rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
rpmDigestFinal(ctx, (void **)&hash, &hashlen, 0);
|
||||||
|
+ ctx = NULL;
|
||||||
|
|
||||||
|
/* Compare leading 16 bits of digest for quick check. */
|
||||||
|
if (hash == NULL || memcmp(hash, sig->signhash16, 2) != 0)
|
||||||
|
@@ -1333,6 +1334,7 @@ rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx)
|
||||||
|
|
||||||
|
exit:
|
||||||
|
free(hash);
|
||||||
|
+ rpmDigestFinal(ctx, NULL, NULL, 0);
|
||||||
|
return res;
|
||||||
|
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
46
backport-Fix-hashlen-overflow.patch
Normal file
46
backport-Fix-hashlen-overflow.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From 3f142b210ae0c01e1b21c2c057b12db574386e7a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Justus Winter <justus@sequoia-pgp.org>
|
||||||
|
Date: Wed, 27 Oct 2021 09:51:13 +0200
|
||||||
|
Subject: [PATCH] Fix hashlen overflow
|
||||||
|
|
||||||
|
struct pgpDigParams_s keeps a copy of the verbatim key material for
|
||||||
|
hashing. The length of this data is kept in 'hashlen' which
|
||||||
|
previously was a uint8_t. However, the size of the signature's hashed
|
||||||
|
subpacket area can be up to 2^16 bytes, and one needs to hash some of
|
||||||
|
the signature packet's fields on top of that.
|
||||||
|
|
||||||
|
Hence, 'hashlen' must be at least a uint32_t.
|
||||||
|
|
||||||
|
This overflow happens in practice as soon as the signature's hashed
|
||||||
|
subpacket area contains an embedded signature. See section 11.1 of
|
||||||
|
RFC4880:
|
||||||
|
|
||||||
|
Each Subkey packet MUST be followed by one Signature packet, which
|
||||||
|
should be a subkey binding signature issued by the top-level key.
|
||||||
|
For subkeys that can issue signatures, the subkey binding signature
|
||||||
|
MUST contain an Embedded Signature subpacket with a primary key
|
||||||
|
binding signature (0x19) issued by the subkey on the top-level key.
|
||||||
|
|
||||||
|
While the embedded signature may be in the unhashed subpacket area
|
||||||
|
because it is self-authenticating, it is more robust to put it in the
|
||||||
|
hashed area.
|
||||||
|
---
|
||||||
|
rpmio/digest.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/rpmio/digest.h b/rpmio/digest.h
|
||||||
|
index 690d17619..3b72a2870 100644
|
||||||
|
--- a/rpmio/digest.h
|
||||||
|
+++ b/rpmio/digest.h
|
||||||
|
@@ -33,7 +33,7 @@ struct pgpDigParams_s {
|
||||||
|
|
||||||
|
uint8_t hash_algo;
|
||||||
|
uint8_t sigtype;
|
||||||
|
- uint8_t hashlen;
|
||||||
|
+ uint32_t hashlen;
|
||||||
|
uint8_t signhash16[2];
|
||||||
|
pgpKeyID_t signid;
|
||||||
|
uint8_t saved;
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
38
backport-Fix-memory-leak-in-pgpPrtParams.patch
Normal file
38
backport-Fix-memory-leak-in-pgpPrtParams.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From b6dffb6dc5ffa2ddc389743f0507876cab341315 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Domonkos <mdomonko@redhat.com>
|
||||||
|
Date: Fri, 7 Jan 2022 16:10:26 +0100
|
||||||
|
Subject: [PATCH] Fix memory leak in pgpPrtParams()
|
||||||
|
|
||||||
|
Make sure selfsig is freed in case we break out of the loop in this
|
||||||
|
block.
|
||||||
|
|
||||||
|
Note that the tests added with the binding validation commit bd36c5d do
|
||||||
|
not cover this code path so valgrind won't show this.
|
||||||
|
---
|
||||||
|
rpmio/rpmpgp.c | 9 ++++-----
|
||||||
|
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
|
||||||
|
index 1e4f66782..35603286f 100644
|
||||||
|
--- a/rpmio/rpmpgp.c
|
||||||
|
+++ b/rpmio/rpmpgp.c
|
||||||
|
@@ -1147,12 +1147,11 @@ int pgpPrtParams(const uint8_t * pkts, size_t pktlen, unsigned int pkttype,
|
||||||
|
|
||||||
|
if (selfsig) {
|
||||||
|
/* subkeys must be followed by binding signature */
|
||||||
|
- if (prevtag == PGPTAG_PUBLIC_SUBKEY) {
|
||||||
|
- if (selfsig->sigtype != PGPSIGTYPE_SUBKEY_BINDING)
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
+ int xx = 1; /* assume failure */
|
||||||
|
|
||||||
|
- int xx = pgpVerifySelf(digp, selfsig, all, i);
|
||||||
|
+ if (!(prevtag == PGPTAG_PUBLIC_SUBKEY &&
|
||||||
|
+ selfsig->sigtype != PGPSIGTYPE_SUBKEY_BINDING))
|
||||||
|
+ xx = pgpVerifySelf(digp, selfsig, all, i);
|
||||||
|
|
||||||
|
selfsig = pgpDigParamsFree(selfsig);
|
||||||
|
if (xx)
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
From f0c158cbc8a50a776b44de2c0fe744c451155a41 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Tue, 4 Jan 2022 15:57:10 +0200
|
||||||
|
Subject: [PATCH] Fix old Python ts.check() argument order regression
|
||||||
|
|
||||||
|
Commit fab2debfe440d677dbd072c3cd73d2c99876e7a5 managed to mess up the
|
||||||
|
order of the last two callback arguments, doh.
|
||||||
|
|
||||||
|
Goes to show that nobody has missed this stuff in 12+ years, so it might
|
||||||
|
be more merciful to put this thing out of its misery...
|
||||||
|
|
||||||
|
Fixes: #1871
|
||||||
|
---
|
||||||
|
python/rpm/transaction.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/python/rpm/transaction.py b/python/rpm/transaction.py
|
||||||
|
index 991fd9a91..ba39881f1 100644
|
||||||
|
--- a/python/rpm/transaction.py
|
||||||
|
+++ b/python/rpm/transaction.py
|
||||||
|
@@ -159,7 +159,7 @@ class TransactionSet(TransactionSetCore):
|
||||||
|
needver = ""
|
||||||
|
|
||||||
|
res.append(((n, v, r),
|
||||||
|
- (needname, needver), needflags, sense, p.key))
|
||||||
|
+ (needname, needver), needflags, p.key, sense))
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
From 1c15d748d3536a21b6edbbf9254db76fefb4b275 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dmitry Gerasimov <d.gerasimov@omp.ru>
|
||||||
|
Date: Mon, 27 Dec 2021 12:27:57 +0300
|
||||||
|
Subject: [PATCH] Fix possible NULL pointer dereference in rpmfcClassify
|
||||||
|
|
||||||
|
Here is simplified overview of possible dereference:
|
||||||
|
|
||||||
|
if (fc == NULL) {
|
||||||
|
rpmlog(RPMLOG_ERR, _("Empty file classifier\n"));
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
exit:
|
||||||
|
rpmstrPoolFreeze(fc->cdict, 0);
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
This issue was found by Svace Static Analyzer.
|
||||||
|
---
|
||||||
|
build/rpmfc.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/build/rpmfc.c b/build/rpmfc.c
|
||||||
|
index eb51a3663..cf2c20316 100644
|
||||||
|
--- a/build/rpmfc.c
|
||||||
|
+++ b/build/rpmfc.c
|
||||||
|
@@ -1168,7 +1168,7 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
|
||||||
|
|
||||||
|
if (fc == NULL) {
|
||||||
|
rpmlog(RPMLOG_ERR, _("Empty file classifier\n"));
|
||||||
|
- goto exit;
|
||||||
|
+ return RPMRC_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* It is OK when we have no files to classify. */
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
70
backport-Fix-rpmtsInitDB-argument-confusion.patch
Normal file
70
backport-Fix-rpmtsInitDB-argument-confusion.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 6e6be7d6ebd5e85c5c8ee7474b476c1038d07af8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Tue, 2 Feb 2021 14:00:32 +0200
|
||||||
|
Subject: [PATCH] Fix rpmtsInitDB() argument confusion
|
||||||
|
|
||||||
|
Since it's introduction, rpmtsInitDB() has passed the second argument
|
||||||
|
directly to rpmdbInit() as permission bits. However commit
|
||||||
|
81fef9848051e5068694cde9b3c2be743d5a93e1 incorrectly documented this
|
||||||
|
as being related to the db mode read/write *mode*, and also used it
|
||||||
|
that way in the python bindings.
|
||||||
|
---
|
||||||
|
lib/rpmts.c | 4 ++--
|
||||||
|
lib/rpmts.h | 5 ++---
|
||||||
|
python/rpmts-py.c | 2 +-
|
||||||
|
3 files changed, 5 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rpmts.c b/lib/rpmts.c
|
||||||
|
index 8c8ae420a..8a6683f9a 100644
|
||||||
|
--- a/lib/rpmts.c
|
||||||
|
+++ b/lib/rpmts.c
|
||||||
|
@@ -104,12 +104,12 @@ int rpmtsOpenDB(rpmts ts, int dbmode)
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int rpmtsInitDB(rpmts ts, int dbmode)
|
||||||
|
+int rpmtsInitDB(rpmts ts, int perms)
|
||||||
|
{
|
||||||
|
rpmtxn txn = rpmtxnBegin(ts, RPMTXN_WRITE);
|
||||||
|
int rc = -1;
|
||||||
|
if (txn)
|
||||||
|
- rc = rpmdbInit(ts->rootDir, dbmode);
|
||||||
|
+ rc = rpmdbInit(ts->rootDir, perms);
|
||||||
|
rpmtxnEnd(txn);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
diff --git a/lib/rpmts.h b/lib/rpmts.h
|
||||||
|
index e04d9e5e2..eca179009 100644
|
||||||
|
--- a/lib/rpmts.h
|
||||||
|
+++ b/lib/rpmts.h
|
||||||
|
@@ -272,12 +272,11 @@ int rpmtsOpenDB(rpmts ts, int dbmode);
|
||||||
|
|
||||||
|
/** \ingroup rpmts
|
||||||
|
* Initialize the database used by the transaction.
|
||||||
|
- * @deprecated An explicit rpmdbInit() is almost never needed.
|
||||||
|
* @param ts transaction set
|
||||||
|
- * @param dbmode O_RDONLY or O_RDWR
|
||||||
|
+ * @param perms database permissions (ie mode bits)
|
||||||
|
* @return 0 on success
|
||||||
|
*/
|
||||||
|
-int rpmtsInitDB(rpmts ts, int dbmode);
|
||||||
|
+int rpmtsInitDB(rpmts ts, int perms);
|
||||||
|
|
||||||
|
/** \ingroup rpmts
|
||||||
|
* Return the transaction database mode
|
||||||
|
diff --git a/python/rpmts-py.c b/python/rpmts-py.c
|
||||||
|
index 27caa0388..4aae43712 100644
|
||||||
|
--- a/python/rpmts-py.c
|
||||||
|
+++ b/python/rpmts-py.c
|
||||||
|
@@ -347,7 +347,7 @@ rpmts_InitDB(rpmtsObject * s)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
- rc = rpmtsInitDB(s->ts, O_RDONLY);
|
||||||
|
+ rc = rpmtsInitDB(s->ts, 0644);
|
||||||
|
if (rc == 0)
|
||||||
|
rc = rpmtsCloseDB(s->ts);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
From 3aa1abc4cabaa77bd9d3d05064466990d7e68a59 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Thu, 18 Nov 2021 11:53:17 +0200
|
||||||
|
Subject: [PATCH] Fix some Lua stack leaks in our initialization code
|
||||||
|
|
||||||
|
---
|
||||||
|
rpmio/rpmlua.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c
|
||||||
|
index 8459cd874..6ad9119a5 100644
|
||||||
|
--- a/rpmio/rpmlua.c
|
||||||
|
+++ b/rpmio/rpmlua.c
|
||||||
|
@@ -131,14 +131,18 @@ rpmlua rpmluaNew()
|
||||||
|
|
||||||
|
for (lib = extlibs; lib->name; lib++) {
|
||||||
|
luaL_requiref(L, lib->name, lib->func, 1);
|
||||||
|
+ lua_pop(L, 1);
|
||||||
|
}
|
||||||
|
lua_pushcfunction(L, rpm_print);
|
||||||
|
lua_setglobal(L, "print");
|
||||||
|
|
||||||
|
lua_getglobal(L, "os");
|
||||||
|
luaL_setfuncs(L, os_overrides, 0);
|
||||||
|
+ lua_pop(L, 1);
|
||||||
|
+
|
||||||
|
lua_getglobal(L, "posix");
|
||||||
|
luaL_setfuncs(L, posix_overrides, 0);
|
||||||
|
+ lua_pop(L, 1);
|
||||||
|
|
||||||
|
lua_getglobal(L, "package");
|
||||||
|
lua_pushfstring(L, "%s/%s", rpmConfigDir(), "/lua/?.lua");
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
33
backport-Fix-use-after-free-in-haveSignature.patch
Normal file
33
backport-Fix-use-after-free-in-haveSignature.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
From ae3d2d234ae47ff85229d3fce97a266fa1aa5a61 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Domonkos <mdomonko@redhat.com>
|
||||||
|
Date: Fri, 7 Jan 2022 13:57:24 +0100
|
||||||
|
Subject: [PATCH] Fix use-after-free in haveSignature()
|
||||||
|
|
||||||
|
pgpPrtParams() may leave sig2 unchanged and if we're not in the very
|
||||||
|
first iteration of the while() loop, we could pass a freed pointer to
|
||||||
|
pgpDigParamsCmp(). Fix by setting it to NULL after freeing.
|
||||||
|
|
||||||
|
Found by Coverity, after commit bd36c5d (subkey binding validation),
|
||||||
|
although note that the commit didn't introduce this bug; it just seems
|
||||||
|
to have been a false negative that got "fixed" by the changes in
|
||||||
|
pgpPrtParams() in that commit.
|
||||||
|
---
|
||||||
|
sign/rpmgensig.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sign/rpmgensig.c b/sign/rpmgensig.c
|
||||||
|
index d8c84e937..e88f9b748 100644
|
||||||
|
--- a/sign/rpmgensig.c
|
||||||
|
+++ b/sign/rpmgensig.c
|
||||||
|
@@ -364,7 +364,7 @@ static int haveSignature(rpmtd sigtd, Header h)
|
||||||
|
pgpPrtParams(oldtd.data, oldtd.count, PGPTAG_SIGNATURE, &sig2);
|
||||||
|
if (pgpDigParamsCmp(sig1, sig2) == 0)
|
||||||
|
rc = 1;
|
||||||
|
- pgpDigParamsFree(sig2);
|
||||||
|
+ sig2 = pgpDigParamsFree(sig2);
|
||||||
|
}
|
||||||
|
pgpDigParamsFree(sig1);
|
||||||
|
rpmtdFreeData(&oldtd);
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
From 77062e68f8675a678a6d136b85fbe1dd2bdb75f1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Tue, 2 Feb 2021 14:26:48 +0200
|
||||||
|
Subject: [PATCH] Honor requested file permissions when creating ndb database
|
||||||
|
files
|
||||||
|
|
||||||
|
Prior to this, ndb files were using hardcoded 0666 permissions whereas
|
||||||
|
rpm generally defaults to 0644.
|
||||||
|
---
|
||||||
|
lib/backend/ndb/glue.c | 10 +++++-----
|
||||||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/backend/ndb/glue.c b/lib/backend/ndb/glue.c
|
||||||
|
index a1599d8fa..96ab88679 100644
|
||||||
|
--- a/lib/backend/ndb/glue.c
|
||||||
|
+++ b/lib/backend/ndb/glue.c
|
||||||
|
@@ -129,13 +129,13 @@ static int ndb_Open(rpmdb rdb, rpmDbiTagVal rpmtag, dbiIndex * dbip, int flags)
|
||||||
|
char *path = rstrscat(NULL, dbhome, "/", rdb->db_ops->path, NULL);
|
||||||
|
rpmlog(RPMLOG_DEBUG, "opening db index %s mode=0x%x\n", path, rdb->db_mode);
|
||||||
|
if ((rdb->db_flags & RPMDB_FLAG_SALVAGE) == 0)
|
||||||
|
- rc = rpmpkgOpen(&pkgdb, path, oflags, 0666);
|
||||||
|
+ rc = rpmpkgOpen(&pkgdb, path, oflags, rdb->db_perms);
|
||||||
|
else
|
||||||
|
rc = rpmpkgSalvage(&pkgdb, path);
|
||||||
|
if (rc && errno == ENOENT && (rdb->db_flags & RPMDB_FLAG_SALVAGE) == 0) {
|
||||||
|
oflags = O_RDWR|O_CREAT;
|
||||||
|
dbi->dbi_flags |= DBI_CREATED;
|
||||||
|
- rc = rpmpkgOpen(&pkgdb, path, oflags, 0666);
|
||||||
|
+ rc = rpmpkgOpen(&pkgdb, path, oflags, rdb->db_perms);
|
||||||
|
}
|
||||||
|
if (rc) {
|
||||||
|
perror("rpmpkgOpen");
|
||||||
|
@@ -161,16 +161,16 @@ static int ndb_Open(rpmdb rdb, rpmDbiTagVal rpmtag, dbiIndex * dbip, int flags)
|
||||||
|
|
||||||
|
/* Open indexes readwrite if possible */
|
||||||
|
ioflags = O_RDWR;
|
||||||
|
- rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, 0666);
|
||||||
|
+ rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, rdb->db_perms);
|
||||||
|
if (rc && (errno == EACCES || errno == EROFS)) {
|
||||||
|
/* If it is not asked for rw explicitly, try to open ro */
|
||||||
|
if (!(oflags & O_RDWR)) {
|
||||||
|
ioflags = O_RDONLY;
|
||||||
|
- rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, 0666);
|
||||||
|
+ rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, rdb->db_perms);
|
||||||
|
}
|
||||||
|
} else if (rc && errno == ENOENT) {
|
||||||
|
ioflags = O_CREAT|O_RDWR;
|
||||||
|
- rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, 0666);
|
||||||
|
+ rc = rpmxdbOpen(&ndbenv->xdb, rdb->db_pkgs->dbi_db, path, ioflags, rdb->db_perms);
|
||||||
|
created = 1;
|
||||||
|
}
|
||||||
|
if (rc) {
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
From 26bb41e1cb7f7836302b3555cff8f20f9fc19188 Mon Sep 17 00:00:00 2001
|
||||||
|
From: licunlong1 <licunlong1@huawei.com>
|
||||||
|
Date: Thu, 21 Oct 2021 21:29:25 +0800
|
||||||
|
Subject: [PATCH] don not skip abnormal files
|
||||||
|
|
||||||
|
This reverts 2d52726bd55f008ea23262c2a3a31ae689cd2af4, as when removing
|
||||||
|
the same file of different archs, if the file state is WRONGCOLOR, it
|
||||||
|
sets the action to `skip`. This will result in some elf files left over.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/transaction.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/transaction.c b/lib/transaction.c
|
||||||
|
index e51cff2..57f7e4a 100644
|
||||||
|
--- a/lib/transaction.c
|
||||||
|
+++ b/lib/transaction.c
|
||||||
|
@@ -673,10 +673,8 @@ assert(otherFi != NULL);
|
||||||
|
}
|
||||||
|
if (XFA_SKIPPING(rpmfsGetAction(fs, i)))
|
||||||
|
break;
|
||||||
|
- if (rpmfilesFState(fi, i) != RPMFILE_STATE_NORMAL) {
|
||||||
|
- rpmfsSetAction(fs, i, FA_SKIP);
|
||||||
|
+ if (rpmfilesFState(fi, i) != RPMFILE_STATE_NORMAL)
|
||||||
|
break;
|
||||||
|
- }
|
||||||
|
|
||||||
|
/* Pre-existing modified config files need to be saved. */
|
||||||
|
if (rpmfilesConfigConflict(fi, i)) {
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
From d41143cb5f6d88eb6e8bd999ad5ea2992bfb10f7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Thu, 18 Nov 2021 13:38:20 +0200
|
||||||
|
Subject: [PATCH] Simplify rpm_print(), fixing a Lua stack leak as a bonus
|
||||||
|
|
||||||
|
Rather than laborously call tostring() in Lua, use the C-side equivalent
|
||||||
|
of luaL_tostring(). This was new as of Lua 5.2, which explains why the
|
||||||
|
original version from 2004 did things the hard way.
|
||||||
|
|
||||||
|
Also fixes a stack leak from not popping "tostring" function after use.
|
||||||
|
---
|
||||||
|
rpmio/rpmlua.c | 9 +--------
|
||||||
|
1 file changed, 1 insertion(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c
|
||||||
|
index 6ad9119a5..74023071a 100644
|
||||||
|
--- a/rpmio/rpmlua.c
|
||||||
|
+++ b/rpmio/rpmlua.c
|
||||||
|
@@ -688,16 +688,9 @@ static int rpm_print (lua_State *L)
|
||||||
|
int n = lua_gettop(L); /* number of arguments */
|
||||||
|
int i;
|
||||||
|
if (!lua) return 0;
|
||||||
|
- lua_getglobal(L, "tostring");
|
||||||
|
for (i = 1; i <= n; i++) {
|
||||||
|
- const char *s;
|
||||||
|
size_t sl;
|
||||||
|
- lua_pushvalue(L, -1); /* function to be called */
|
||||||
|
- lua_pushvalue(L, i); /* value to print */
|
||||||
|
- lua_call(L, 1, 1);
|
||||||
|
- s = lua_tolstring(L, -1, &sl); /* get result */
|
||||||
|
- if (s == NULL)
|
||||||
|
- return luaL_error(L, "`tostring' must return a string to `print'");
|
||||||
|
+ const char *s = luaL_tolstring(L, i, &sl);
|
||||||
|
if (lua->printbuf) {
|
||||||
|
rpmluapb prbuf = lua->printbuf;
|
||||||
|
if (prbuf->used+sl+1 > prbuf->alloced) {
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
From ed07a187734addfa16be9ee922398e4ff9859f53 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Domonkos <mdomonko@redhat.com>
|
||||||
|
Date: Tue, 7 Dec 2021 08:08:37 +0100
|
||||||
|
Subject: [PATCH] Skip recorded symlinks in --setperms (RhBug:1900662)
|
||||||
|
|
||||||
|
If a package contains a symlink in the buildroot which is declared as a
|
||||||
|
ghost or config file but is a regular file or directory on the system
|
||||||
|
where it's installed, a --setperms call will reset its permissions to
|
||||||
|
those of a symlink (777 on Linux), which almost certainly is not the
|
||||||
|
correct thing to do.
|
||||||
|
|
||||||
|
To fix that, just skip files that were recorded as symlinks.
|
||||||
|
|
||||||
|
This is a special case of a general issue in --setperms; since file
|
||||||
|
permission semantics may change depending on the file type, to stay on
|
||||||
|
the safe side, any (ghost or config) file whose type changes after
|
||||||
|
installation should probably be skipped. However, symlinks are the most
|
||||||
|
prominent case here, so let's just focus on that now and avoid adding
|
||||||
|
too much cleverness to a popt alias (this got us into trouble not too
|
||||||
|
long ago, see commits 38c2f6e and 0d83637). We may revisit this in the
|
||||||
|
eventual C implementation.
|
||||||
|
---
|
||||||
|
rpmpopt.in | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/rpmpopt.in b/rpmpopt.in
|
||||||
|
index 27d298651..d5a6b140b 100644
|
||||||
|
--- a/rpmpopt.in
|
||||||
|
+++ b/rpmpopt.in
|
||||||
|
@@ -44,6 +44,7 @@ rpm alias --scripts --qf '\
|
||||||
|
--POPTdesc=$"list install/erase scriptlets from package(s)"
|
||||||
|
|
||||||
|
rpm alias --setperms -q --qf '[\[ -L %{FILENAMES:shescape} \] || \
|
||||||
|
+ \[ -n %{FILELINKTOS:shescape} \] || \
|
||||||
|
( \[ $((%{FILEFLAGS} & 2#1001000)) != 0 \] && \[ ! -e %{FILENAMES:shescape} \] ) || \
|
||||||
|
chmod %7{FILEMODES:octal} %{FILENAMES:shescape}\n]' \
|
||||||
|
--pipe "grep -v \(none\) | grep '^. -L ' | sed 's/chmod .../chmod /' | sh" \
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
From a34bf5bdf601d6d0ae5d28193090a29b9ef12600 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Schroeder <mls@suse.de>
|
||||||
|
Date: Mon, 22 Nov 2021 11:12:20 +0100
|
||||||
|
Subject: [PATCH] Switch the floating point type in rpmhook from float to
|
||||||
|
double
|
||||||
|
|
||||||
|
There's no real reason why it should be float. Plus, the test if
|
||||||
|
the number is an integer does not work for big integers that
|
||||||
|
do not fit into a float.
|
||||||
|
---
|
||||||
|
rpmio/rpmhook.c | 2 +-
|
||||||
|
rpmio/rpmhook.h | 2 +-
|
||||||
|
rpmio/rpmlua.c | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmhook.c b/rpmio/rpmhook.c
|
||||||
|
index 9fe2a21f7..119798313 100644
|
||||||
|
--- a/rpmio/rpmhook.c
|
||||||
|
+++ b/rpmio/rpmhook.c
|
||||||
|
@@ -187,7 +187,7 @@ static rpmhookArgs rpmhookArgsParse(const char *argt, va_list ap)
|
||||||
|
args->argv[i].i = va_arg(ap, int);
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
- args->argv[i].f = (float)va_arg(ap, double);
|
||||||
|
+ args->argv[i].f = va_arg(ap, double);
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
args->argv[i].p = va_arg(ap, void *);
|
||||||
|
diff --git a/rpmio/rpmhook.h b/rpmio/rpmhook.h
|
||||||
|
index 52f5634ca..842c12646 100644
|
||||||
|
--- a/rpmio/rpmhook.h
|
||||||
|
+++ b/rpmio/rpmhook.h
|
||||||
|
@@ -4,7 +4,7 @@
|
||||||
|
typedef union {
|
||||||
|
const char * s;
|
||||||
|
int i;
|
||||||
|
- float f;
|
||||||
|
+ double f;
|
||||||
|
void * p;
|
||||||
|
} rpmhookArgv;
|
||||||
|
|
||||||
|
diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c
|
||||||
|
index fe2e51361..c5bdf4293 100644
|
||||||
|
--- a/rpmio/rpmlua.c
|
||||||
|
+++ b/rpmio/rpmlua.c
|
||||||
|
@@ -873,7 +873,7 @@ static int rpm_call(lua_State *L)
|
||||||
|
args->argv[i].p = NULL;
|
||||||
|
break;
|
||||||
|
case LUA_TNUMBER: {
|
||||||
|
- float f = (float)lua_tonumber(L, i+1);
|
||||||
|
+ double f = (double)lua_tonumber(L, i+1);
|
||||||
|
if (f == (int)f) {
|
||||||
|
argt[i] = 'i';
|
||||||
|
args->argv[i].i = (int)f;
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
53
backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
Normal file
53
backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
From fc8386be36a32f8462a0d16a2dd3e5e18f7fbc2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Demi Marie Obenour <demi@invisiblethingslab.com>
|
||||||
|
Date: Mon, 12 Apr 2021 11:30:51 -0400
|
||||||
|
Subject: [PATCH] rpmkeys: exit non-zero on I/O errors
|
||||||
|
|
||||||
|
If writing to stdout or stderr fails, rpmkeys should exit with a
|
||||||
|
non-zero status code.
|
||||||
|
---
|
||||||
|
rpmkeys.c | 4 ++++
|
||||||
|
tests/rpmsigdig.at | 13 +++++++++++++
|
||||||
|
2 files changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rpmkeys.c b/rpmkeys.c
|
||||||
|
index 542601c87..2c304de20 100644
|
||||||
|
--- a/rpmkeys.c
|
||||||
|
+++ b/rpmkeys.c
|
||||||
|
@@ -86,5 +86,9 @@ int main(int argc, char *argv[])
|
||||||
|
exit:
|
||||||
|
rpmtsFree(ts);
|
||||||
|
rpmcliFini(optCon);
|
||||||
|
+ fflush(stderr);
|
||||||
|
+ fflush(stdout);
|
||||||
|
+ if (ferror(stdout) || ferror(stderr))
|
||||||
|
+ return 255; /* I/O error */
|
||||||
|
return ec;
|
||||||
|
}
|
||||||
|
diff --git a/tests/rpmsigdig.at b/tests/rpmsigdig.at
|
||||||
|
index c8b9f139e..429163e3d 100644
|
||||||
|
--- a/tests/rpmsigdig.at
|
||||||
|
+++ b/tests/rpmsigdig.at
|
||||||
|
@@ -24,6 +24,19 @@ runroot rpmkeys -Kv /data/RPMS/hello-2.0-1.x86_64.rpm /data/RPMS/hello-1.0-1.i38
|
||||||
|
[])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+# ------------------------------
|
||||||
|
+# Test rpmkeys write errors
|
||||||
|
+AT_SETUP([[rpmkeys -K no space left on stdout]])
|
||||||
|
+AT_KEYWORDS([rpmkeys digest])
|
||||||
|
+AT_CHECK([
|
||||||
|
+RPMDB_INIT[
|
||||||
|
+
|
||||||
|
+runroot rpmkeys -Kv /data/RPMS/hello-2.0-1.x86_64.rpm /data/RPMS/hello-1.0-1.i386.rpm >/dev/full
|
||||||
|
+]],255,,[[Error writing to log: No space left on device
|
||||||
|
+]])
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
+
|
||||||
|
# ------------------------------
|
||||||
|
# Test corrupted package verification (corrupted signature)
|
||||||
|
AT_SETUP([rpmkeys -Kv <corrupted unsigned> 1])
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
27
backport-treat-0-as-valid-file-descriptor.patch
Normal file
27
backport-treat-0-as-valid-file-descriptor.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From be64821b908fdb1ff3c12530430d1cf046839e60 Mon Sep 17 00:00:00 2001
|
||||||
|
From: licunlong <licunlong1@huawei.com>
|
||||||
|
Date: Thu, 20 Jan 2022 19:59:44 +0800
|
||||||
|
Subject: [PATCH] treat 0 as valid file descriptor The descriptor is openned in
|
||||||
|
rpmpkgOpen, and we treat 0 as valid file descriptor. Here we should do the
|
||||||
|
same or fail earlier.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/backend/ndb/rpmpkg.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/backend/ndb/rpmpkg.c b/lib/backend/ndb/rpmpkg.c
|
||||||
|
index 64d049350..0a041e4c0 100644
|
||||||
|
--- a/lib/backend/ndb/rpmpkg.c
|
||||||
|
+++ b/lib/backend/ndb/rpmpkg.c
|
||||||
|
@@ -734,7 +734,7 @@ static int rpmpkgAddSlotPage(rpmpkgdb pkgdb)
|
||||||
|
|
||||||
|
static int rpmpkgGetLock(rpmpkgdb pkgdb, int type)
|
||||||
|
{
|
||||||
|
- if (!pkgdb->fd)
|
||||||
|
+ if (pkgdb->fd < 0)
|
||||||
|
return RPMRC_FAIL;
|
||||||
|
if (flock(pkgdb->fd, type))
|
||||||
|
return RPMRC_FAIL;
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
88
rpm.spec
88
rpm.spec
@ -1,6 +1,6 @@
|
|||||||
Name: rpm
|
Name: rpm
|
||||||
Version: 4.15.1
|
Version: 4.15.1
|
||||||
Release: 38
|
Release: 39
|
||||||
Summary: RPM Package Manager
|
Summary: RPM Package Manager
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.rpm.org/
|
URL: http://www.rpm.org/
|
||||||
@ -107,36 +107,60 @@ Patch93: backport-Always-free-the-arg-list-passed-to-rpmGlob.patch
|
|||||||
Patch94: backport-Fix-memory-leak-in-decodePkts.patch
|
Patch94: backport-Fix-memory-leak-in-decodePkts.patch
|
||||||
Patch95: backport-Fix-memory-leaks-in-Lua-rex-extension.patch
|
Patch95: backport-Fix-memory-leaks-in-Lua-rex-extension.patch
|
||||||
|
|
||||||
Patch96: fix-lsetxattr-error-in-container.patch
|
Patch96: backport-Ensure-database-creation-on-initial-installation.patch
|
||||||
Patch97: backport-Reduce-undefined-pointer-arithmetic.patch
|
Patch97: backport-Honor-requested-file-permissions-when-creating-ndb-d.patch
|
||||||
Patch98: backport-Do-not-allow-extra-packets-to-follow-a-signature.patch
|
Patch98: backport-Fix-rpmtsInitDB-argument-confusion.patch
|
||||||
Patch99: backport-0001-CVE-2021-3521.patch
|
Patch99: backport-Don-t-segfault-on-missing-priority-tag.patch
|
||||||
Patch100: backport-0002-CVE-2021-3521.patch
|
Patch100: backport-Check-file-iterator-for-being-NULL-consistently.patch
|
||||||
Patch101: backport-0003-CVE-2021-3521.patch
|
|
||||||
|
|
||||||
Patch102: rpm-selinux-plugin-check-context-file-exist.patch
|
Patch101: fix-lsetxattr-error-in-container.patch
|
||||||
Patch103: backport-Use-root-as-default-UID_0_USER-and-UID_0_GROUP.patch
|
Patch102: backport-Reduce-undefined-pointer-arithmetic.patch
|
||||||
|
Patch103: backport-Do-not-allow-extra-packets-to-follow-a-signature.patch
|
||||||
|
Patch104: backport-0001-CVE-2021-3521.patch
|
||||||
|
Patch105: backport-0002-CVE-2021-3521.patch
|
||||||
|
Patch106: backport-0003-CVE-2021-3521.patch
|
||||||
|
|
||||||
Patch104: backport-Upgrade-FA_TOUCH-to-FA_CREATE-if-the-file-went-away-.patch
|
Patch107: backport-Revert-Explicitly-skip-non-installed-files-on-erasur.patch
|
||||||
Patch105: backport-Clean-up-file-unpack-iteration-logic-a-bit.patch
|
Patch108: backport-Fix-hash-context-leak.patch
|
||||||
Patch106: backport-Refactor-file-install-and-remove-around-a-common-str.patch
|
Patch109: backport-Fix-hashlen-overflow.patch
|
||||||
Patch107: backport-Refactor-fsmMkfile-to-take-advantage-of-the-new-stat.patch
|
Patch110: backport-Fix-some-Lua-stack-leaks-in-our-initialization-code.patch
|
||||||
Patch108: backport-Drop-unused-filename-variable.patch
|
Patch111: backport-Simplify-rpm_print-fixing-a-Lua-stack-leak-as-a-bonu.patch
|
||||||
Patch109: backport-Handle-hardlink-tracking-with-a-file-state-pointer.patch
|
Patch112: backport-Switch-the-floating-point-type-in-rpmhook-from-float.patch
|
||||||
Patch110: backport-Handle-file-install-failures-more-gracefully.patch
|
|
||||||
Patch111: backport-Add-hardlink-helper-to-fsm-to-make-it-debuggable.patch
|
Patch113: rpm-selinux-plugin-check-context-file-exist.patch
|
||||||
Patch112: backport-Make-file-open-and-close-in-fsm-debuggable.patch
|
Patch114: backport-Use-root-as-default-UID_0_USER-and-UID_0_GROUP.patch
|
||||||
Patch113: backport-Streamline-consolidate-the-hardlink-handling-logic.patch
|
|
||||||
Patch114: backport-Add-diagnostics-to-archive-unpacking.patch
|
Patch115: backport-Fix-a-memleak-in-ndb-from-opened-but-not-closed-dbis.patch
|
||||||
Patch115: backport-Add-optional-callback-on-directory-changes-during-rp.patch
|
Patch116: backport-Fix-possible-NULL-pointer-dereference-in-rpmfcClassi.patch
|
||||||
Patch116: backport-0001-CVE-2021-35939-CVE-2021-35937.patch
|
Patch117: backport-Fix-old-Python-ts.check-argument-order-regression.patch
|
||||||
Patch117: backport-Consolidate-skipped-hardlink-with-content-case-with-.patch
|
Patch118: backport-Fix-memory-leak-in-pgpPrtParams.patch
|
||||||
Patch118: backport-Fix-sanitize-the-hardlink-metadata-setting-logic.patch
|
Patch119: backport-Fix-use-after-free-in-haveSignature.patch
|
||||||
Patch119: backport-Convert-the-file-creation-steps-the-at-family-of-cal.patch
|
Patch120: backport-Close-file-before-replacing-signed.patch
|
||||||
Patch120: backport-Bury-rpmio-FD-use-to-fsmUnpack.patch
|
Patch121: backport-Fix-__cplusplus-misspelled-as-_cplusplus.patch
|
||||||
Patch121: backport-Move-file-metadata-setting-back-to-unpack-stage.patch
|
Patch122: backport-treat-0-as-valid-file-descriptor.patch
|
||||||
Patch122: backport-Return-descriptor-of-created-file-from-fsmMkfile.patch
|
Patch123: backport-Skip-recorded-symlinks-in-setperms-RhBug-1900662.patch
|
||||||
Patch123: backport-0001-CVE-2021-35938.patch
|
Patch124: backport-rpmkeys-exit-non-zero-on-I-O-errors.patch
|
||||||
|
|
||||||
|
Patch125: backport-Upgrade-FA_TOUCH-to-FA_CREATE-if-the-file-went-away-.patch
|
||||||
|
Patch126: backport-Clean-up-file-unpack-iteration-logic-a-bit.patch
|
||||||
|
Patch127: backport-Refactor-file-install-and-remove-around-a-common-str.patch
|
||||||
|
Patch128: backport-Refactor-fsmMkfile-to-take-advantage-of-the-new-stat.patch
|
||||||
|
Patch129: backport-Drop-unused-filename-variable.patch
|
||||||
|
Patch130: backport-Handle-hardlink-tracking-with-a-file-state-pointer.patch
|
||||||
|
Patch131: backport-Handle-file-install-failures-more-gracefully.patch
|
||||||
|
Patch132: backport-Add-hardlink-helper-to-fsm-to-make-it-debuggable.patch
|
||||||
|
Patch133: backport-Make-file-open-and-close-in-fsm-debuggable.patch
|
||||||
|
Patch134: backport-Streamline-consolidate-the-hardlink-handling-logic.patch
|
||||||
|
Patch135: backport-Add-diagnostics-to-archive-unpacking.patch
|
||||||
|
Patch136: backport-Add-optional-callback-on-directory-changes-during-rp.patch
|
||||||
|
Patch137: backport-0001-CVE-2021-35939-CVE-2021-35937.patch
|
||||||
|
Patch138: backport-Consolidate-skipped-hardlink-with-content-case-with-.patch
|
||||||
|
Patch139: backport-Fix-sanitize-the-hardlink-metadata-setting-logic.patch
|
||||||
|
Patch140: backport-Convert-the-file-creation-steps-the-at-family-of-cal.patch
|
||||||
|
Patch141: backport-Bury-rpmio-FD-use-to-fsmUnpack.patch
|
||||||
|
Patch142: backport-Move-file-metadata-setting-back-to-unpack-stage.patch
|
||||||
|
Patch143: backport-Return-descriptor-of-created-file-from-fsmMkfile.patch
|
||||||
|
Patch144: backport-0001-CVE-2021-35938.patch
|
||||||
|
|
||||||
BuildRequires: gcc autoconf automake libtool make gawk popt-devel openssl-devel readline-devel libdb-devel
|
BuildRequires: gcc autoconf automake libtool make gawk popt-devel openssl-devel readline-devel libdb-devel
|
||||||
BuildRequires: zlib-devel libzstd-devel xz-devel bzip2-devel libarchive-devel ima-evm-utils-devel
|
BuildRequires: zlib-devel libzstd-devel xz-devel bzip2-devel libarchive-devel ima-evm-utils-devel
|
||||||
@ -420,6 +444,12 @@ make check || (cat tests/rpmtests.log; exit 0)
|
|||||||
%{_mandir}/man1/gendiff.1*
|
%{_mandir}/man1/gendiff.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Nov 04 2022 renhongxun<renhongxun@h-partners.com> - 4.15.1-39
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:sync patches from upstream
|
||||||
|
|
||||||
* Wed Nov 02 2022 renhongxun<renhongxun@h-partners.com> - 4.15.1-38
|
* Wed Nov 02 2022 renhongxun<renhongxun@h-partners.com> - 4.15.1-38
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user