Don't segfault on missing priority tag

Backport upstream 4.17.x commit
5b58ea7cfb
to fix a possible segfault on librpm.

Centos fixes this in rpm-4.16.1.3-30.

Signed-off-by: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
This commit is contained in:
Zhao Mengmeng 2024-06-04 11:30:09 +08:00
parent 104af16a6a
commit fd25d7a772
2 changed files with 45 additions and 1 deletions

View File

@ -0,0 +1,40 @@
From 920c1f38b1dfff49bec68515882ade4c03c90512 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
(cherry picked from commit fd57fc716231c8296d340fdb4c0f6eac176f7f7c)
---
lib/rpmtriggers.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/rpmtriggers.c b/lib/rpmtriggers.c
index 53646a5..17257b4 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.33.0

View File

@ -1,6 +1,6 @@
Name: rpm
Version: 4.17.0
Release: 37
Release: 38
Summary: RPM Package Manager
License: GPLv2+
URL: http://www.rpm.org/
@ -127,6 +127,7 @@ Patch6088: backport-An-enumeration-is-not-a-bitfield-use-an-integer-inst.patch
Patch6089: backport-Fix-an-enum-int-type-mismatch-in-rpmfiArchiveReadToF.patch
Patch6090: backport-Fix-an-enum-int-type-mismatch-in-transaction-verify-.patch
Patch6091: backport-Fix-enum-type-mismatch-in-rpmTagGetValue.patch
Patch6092: backport-Don-t-segfault-on-missing-priority-tag.patch
BuildRequires: gcc autoconf automake libtool make gawk popt-devel openssl-devel readline-devel
BuildRequires: zlib-devel zstd-devel >= 1.3.8 xz-devel bzip2-devel libarchive-devel ima-evm-utils-devel
@ -417,6 +418,9 @@ make check || (cat tests/rpmtests.log; exit 0)
%{_mandir}/man1/gendiff.1*
%changelog
* Tue Jun 04 2024 Zhao Mengmeng <zhaomengmeng@kylinos.cn> - 4.17.0-38
- Don't segfault on missing priority tag
* Tue May 7 2024 gengqihu<gengqihu2@h-partners.com> - 4.17.0-37
- Backport some patches from upstream