Projects
Mega:23.09
rpm
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 2
View file
_service:tar_scm:rpm.spec
Changed
@@ -1,6 +1,6 @@ Name: rpm Version: 4.18.1 -Release: 2 +Release: 8 Summary: RPM Package Manager License: GPLv2+ URL: http://www.rpm.org/ @@ -22,6 +22,13 @@ Patch6001: backport-Move-variable-to-nearest-available-scope.patch Patch6002: backport-revert-Permit-building-rpm-from-git-without-pandoc.patch Patch6003: backport-Fix-per-file-plugin-hook-regression-introduced-in-4..patch +Patch6004: backport-Remove-obscure-check-for-package-build-time-from-reb.patch +Patch6005: backport-Fix-possible-null-pointer-reference-in-ndb.patch +Patch6006: backport-Fix-rpmDigestBundleFinal-and-Update-return-code-on-i.patch +Patch6007: backport-Actually-return-an-error-in-parseScript-if-parsing-f.patch +Patch6008: backport-Check-inside-root-when-querying-for-files.patch +Patch6009: backport-Fix-a-segfault-on-a-non-stringable-argument-to-macro.patch +Patch6010: backport-Fix-a-copy-paste-help-description-of-whatconflicts-R.patch Patch9000: Add-digest-list-plugin.patch Patch9001: Add-IMA-digest-list-support.patch @@ -152,6 +159,19 @@ mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily install -m 755 scripts/rpm.daily ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily/rpm +# During the upgrade of the major rpm version, the dynamic library may not be compatible. +# Therefore, ensure that no other rpm command is executed during the upgrade. A judgment +# is added to the RPM script of the scheduled task. If the dynamic library is not the +# dynamic library of the current version, exits directly. +pushd ${RPM_BUILD_ROOT}%{_libdir} +export SONAME=`ls librpm.so.*.*.*` +popd +sed -i "/bin\/sh/a \ +if ! -e %{_libdir}\/${SONAME} ; then\n\ + exit 0\n\ +fi" ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily/rpm +cp ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily/rpm ${RPM_BUILD_ROOT}%{_rpmconfigdir}/rpm.daily + mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d install -m 644 scripts/rpm.log ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/rpm @@ -197,12 +217,15 @@ %posttrans { set -e - dbpath=$(rpm -E %{_dbpath}) - while -e ${dbpath}/Packages - do - date >> /var/log/rebuilddb.log 2>&1 - rpm -vvv --rebuilddb >> /var/log/rebuilddb.log 2>&1 - done + disable_auto_rebuilddb=$(rpm -E 0%%{?_disable_auto_rebuilddb}) + if ${disable_auto_rebuilddb} -eq 0 ; then + dbpath=$(rpm -E %{_dbpath}) + while -e ${dbpath}/Packages + do + date >> /var/log/rebuilddb.log 2>&1 + rpm -vvv --rebuilddb >> /var/log/rebuilddb.log 2>&1 + done + fi } & %files -f %{name}.lang @@ -304,6 +327,24 @@ %exclude %{_mandir}/man8/rpmspec.8.gz %changelog +* Fri Sep 08 2023 renhongxun<renhongxun@h-partners.com> - 4.18.1-8 +- support _disable_auto_rebuilddb macro in posttrans + +* Wed Sep 06 2023 renhongxun<renhongxun@h-partners.com> - 4.18.1-7 +- Fix a copy-paste error in --help + +* Tue Sep 05 2023 renhongxun<renhongxun@h-partners.com> - 4.18.1-6 +- Fix the coredump which may occur during upgrading of rpm + +* Tue Sep 5 2023 hongjinghao<hongjinghao@huawei.com> - 4.18.1-5 +- Fix a segfault on a non-stringable argument to macro call from Lua + +* Tue Aug 29 2023 renhongxun<renhongxun@h-partners.com> - 4.18.1-4 +- Check inside --root when querying for files + +* Wed Aug 02 2023 renhongxun<renhongxun@h-partners.com> - 4.18.1-3 +- backport some patches from upstream + * Fri Jul 21 2023 xujing<xujing125@huawei.com> - 4.18.1-2 - fix Unbundle-config-site-and-add-RPM-LD-FLAGS-macro.patch is incorrectly adapted
View file
_service:tar_scm:backport-Actually-return-an-error-in-parseScript-if-parsing-f.patch
Added
@@ -0,0 +1,48 @@ +From 911a4f253c7213a8570028a7dc2a20b045de8e9e Mon Sep 17 00:00:00 2001 +From: Fabian Vogt <fvogt@suse.de> +Date: Mon, 26 Jun 2023 16:28:07 +0200 +Subject: PATCH Actually return an error in parseScript if parsing fails + +The return value is stored in the "res" variable which is set to the return +value of parseLines early in the function. Past that point, any "goto exit;" +caused the function to return success. This was introduced by 52ce88851abb +("Port parseScript() to use parseLines(), no functional changes"). To fix it, +reintroduce the nextPart variable. +--- + build/parseScript.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/build/parseScript.c b/build/parseScript.c +index f8b693ac6..6f3dc2fe8 100644 +--- a/build/parseScript.c ++++ b/build/parseScript.c +@@ -95,7 +95,7 @@ int parseScript(rpmSpec spec, int parsePart) + int index; + char * reqargs = NULL; + +- int res = PART_ERROR; /* assume failure */ ++ int nextPart, res = PART_ERROR; /* assume failure */ + int rc, argc; + int arg; + const char **argv = NULL; +@@ -367,7 +367,7 @@ int parseScript(rpmSpec spec, int parsePart) + goto exit; + } + +- if ((res = parseLines(spec, STRIP_NOTHING, NULL, &sb)) == PART_ERROR) ++ if ((nextPart = parseLines(spec, STRIP_NOTHING, NULL, &sb)) == PART_ERROR) + goto exit; + + if (sb) { +@@ -479,6 +479,8 @@ int parseScript(rpmSpec spec, int parsePart) + } + } + ++ res = nextPart; ++ + exit: + free(reqargs); + freeStringBuf(sb); +-- +2.27.0 +
View file
_service:tar_scm:backport-Check-inside-root-when-querying-for-files.patch
Added
@@ -0,0 +1,38 @@ +From 3e820eaa4c8cb94a63338366cbf014dc5264eba2 Mon Sep 17 00:00:00 2001 +From: Florian Festi <ffesti@redhat.com> +Date: Tue, 25 Jul 2023 12:08:42 +0200 +Subject: PATCH Check inside --root when querying for files + +rpm -qf checks if the argument actually exists if it can't be found in +the rpmdb and gives different messages based on that. + +This was done without taking the root dir into account leading to wrong +messages if the file only exists in the root dir but not outside. + +Resolves: #2576 +--- + lib/query.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/query.c b/lib/query.c +index e816241b7..dc2dc910b 100644 +--- a/lib/query.c ++++ b/lib/query.c +@@ -470,11 +470,13 @@ static rpmdbMatchIterator initQueryIterator(QVA_t qva, rpmts ts, const char * ar + + if (mi == NULL) { + struct stat sb; +- if (lstat(fn, &sb) != 0) ++ char * full_fn = rpmGetPath(rpmtsRootDir(ts), fn, NULL); ++ if (lstat(full_fn, &sb) != 0) + rpmlog(RPMLOG_ERR, _("file %s: %s\n"), fn, strerror(errno)); + else + rpmlog(RPMLOG_NOTICE, + _("file %s is not owned by any package\n"), fn); ++ free(full_fn); + } + + free(fn); +-- +2.27.0 +
View file
_service:tar_scm:backport-Fix-a-copy-paste-help-description-of-whatconflicts-R.patch
Added
@@ -0,0 +1,26 @@ +From 03525592c944957f3b7b200b7daeb9f615cdcde7 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen <pmatilai@redhat.com> +Date: Tue, 23 May 2023 12:46:22 +0300 +Subject: PATCH Fix a copy-paste --help description of --whatconflicts + (RhBug:2208661) + +--- + lib/poptQV.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/poptQV.c b/lib/poptQV.c +index ac8e8975d..8bd91c652 100644 +--- a/lib/poptQV.c ++++ b/lib/poptQV.c +@@ -108,7 +108,7 @@ struct poptOption rpmQVSourcePoptTable = { + { "verify", 'V', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'V', + N_("rpm verify mode"), NULL }, + { "whatconflicts", '\0', 0, 0, POPT_WHATCONFLICTS, +- N_("query/verify the package(s) which require a dependency"), "CAPABILITY" }, ++ N_("query/verify the package(s) which conflict with a dependency"), "CAPABILITY" }, + { "whatrequires", '\0', 0, 0, POPT_WHATREQUIRES, + N_("query/verify the package(s) which require a dependency"), "CAPABILITY" }, + { "whatobsoletes", '\0', 0, 0, POPT_WHATOBSOLETES, +-- +2.27.0 +
View file
_service:tar_scm:backport-Fix-a-segfault-on-a-non-stringable-argument-to-macro.patch
Added
@@ -0,0 +1,58 @@ +From 856ddc334174fd37fe4ce81bc9f9f11a08cf6c81 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen <pmatilai@redhat.com> +Date: Fri, 17 Mar 2023 12:53:42 +0200 +Subject: PATCH Fix a segfault on a non-stringable argument to macro call + from Lua + +When natively calling a parametric macro from Lua, with the arguments +inside a table, we can't assume lua_tostring() always succeeds as it +can fail eg on a table. Report the error instead of crashing in argvAdd(), +and add a test as well. +--- + rpmio/rpmlua.c | 9 +++++++-- + tests/rpmmacro.at | 9 +++++++++ + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c +index 6c42af792..0e3685713 100644 +--- a/rpmio/rpmlua.c ++++ b/rpmio/rpmlua.c +@@ -1178,8 +1178,13 @@ static int mc_call(lua_State *L) + + for (int i = 1; i <= nitem; i++) { + lua_rawgeti(L, 1, i); +- argvAdd(&argv, lua_tostring(L, -1)); +- lua_pop(L, 1); ++ const char *s= lua_tostring(L, -1); ++ if (s) { ++ argvAdd(&argv, s); ++ lua_pop(L, 1); ++ } else { ++ luaL_argerror(L, i, "cannot convert to string"); ++ } + } + + if (rpmExpandThisMacro(*mc, name, argv, &buf, 0) >= 0) { +diff --git a/tests/rpmmacro.at b/tests/rpmmacro.at +index 55b7d5fa5..22d873e81 100644 +--- a/tests/rpmmacro.at ++++ b/tests/rpmmacro.at +@@ -713,6 +713,15 @@ nil + 1:%{?aaa} 2:%{yyy} + that + ) ++ ++AT_CHECK( ++runroot rpm \ ++ --eval "%{lua:macros.defined({1,2,{}})}" ++, ++1, ++, ++error: lua script failed: string "<lua>":1: bad argument #3 to 'defined' (cannot convert to string) ++) + AT_CLEANUP + + AT_SETUP(lua macros recursion) +-- +2.33.0 +
View file
_service:tar_scm:backport-Fix-possible-null-pointer-reference-in-ndb.patch
Added
@@ -0,0 +1,28 @@ +From 8ec9cfc81c3f8326a1c7ee5b795ef517cd48e6b4 Mon Sep 17 00:00:00 2001 +From: yuxiaojun <yuxiaojun1011@outlook.com> +Date: Wed, 14 Jun 2023 11:23:24 +0800 +Subject: PATCH Fix possible null pointer reference in ndb + +slot1 and slot2 may be NULL + +Signed-off-by: yuxiaojun <yuxiaojun1011@outlook.com> +--- + lib/backend/ndb/rpmxdb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/backend/ndb/rpmxdb.c b/lib/backend/ndb/rpmxdb.c +index 2c1f29842..d9c373cb0 100644 +--- a/lib/backend/ndb/rpmxdb.c ++++ b/lib/backend/ndb/rpmxdb.c +@@ -755,7 +755,7 @@ static int moveblobstofront(rpmxdb xdb, struct xdb_slot *afterslot) + if (slot2 == xdb->slots) + slot2 = 0; + } +- if (slot1->pagecnt < slot2->pagecnt) { ++ if (slot1 && slot2 && slot1->pagecnt < slot2->pagecnt) { + struct xdb_slot *tmp = slot1; + slot1 = slot2; + slot2 = tmp; +-- +2.27.0 +
View file
_service:tar_scm:backport-Fix-rpmDigestBundleFinal-and-Update-return-code-on-i.patch
Added
@@ -0,0 +1,40 @@ +From 3a50688558f18cfb250b2e70bc34464a8e089d32 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen <pmatilai@redhat.com> +Date: Tue, 20 Jun 2023 09:34:47 +0300 +Subject: PATCH Fix rpmDigestBundleFinal() and Update() return code on + invalid arguments + +Discovered via #2548, these functions merrily return zero for success +when passed NULL data. In rpm nothing bothers to check for their return +codes but it doesn't mean it's the right thing to do +--- + rpmio/digest.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/rpmio/digest.c b/rpmio/digest.c +index 1975fe6b9..9c679d820 100644 +--- a/rpmio/digest.c ++++ b/rpmio/digest.c +@@ -77,8 +77,9 @@ int rpmDigestBundleAddID(rpmDigestBundle bundle, int algo, int id, + } + int rpmDigestBundleUpdate(rpmDigestBundle bundle, const void *data, size_t len) + { +- int rc = 0; ++ int rc = -1; + if (bundle && data && len > 0) { ++ rc = 0; + for (int i = 0; i <= bundle->index_max; i++) { + if (bundle->idsi > 0) + rc += rpmDigestUpdate(bundle->digestsi, data, len); +@@ -91,7 +92,7 @@ int rpmDigestBundleUpdate(rpmDigestBundle bundle, const void *data, size_t len) + int rpmDigestBundleFinal(rpmDigestBundle bundle, int id, + void ** datap, size_t * lenp, int asAscii) + { +- int rc = 0; ++ int rc = -1; + int ix = findID(bundle, id); + + if (ix >= 0) { +-- +2.27.0 +
View file
_service:tar_scm:backport-Remove-obscure-check-for-package-build-time-from-reb.patch
Added
@@ -0,0 +1,41 @@ +From 6caf2a5f586838f6188dd6667a4df6d9c6ec0163 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen <pmatilai@redhat.com> +Date: Thu, 1 Jun 2023 09:45:01 +0300 +Subject: PATCH Remove obscure check for package build time from --rebuilddb + (#2527) + +Back in 1997, commit be0b90359bcd8156385178eb9b570c0538c0333f added a +sanity check for --rebuilddb operation, skipping headers which lack +some basic tags. Name, version and release are real requirements for +packages, but checking for buildtime is odd, and plain wrong. +Yes, we expect that to be present in packages built by rpm, but that's +not used for any processing and certainly is not required for a package +to be installable. And if it can be installed then it can't be +right to throw it away when rebuilding, leaving untrackable orphan +files in the process. + +It is also documented as informational and optional by LSB. While +severely outdated, it is right on this account. + +Fixes: #2527 +--- + lib/rpmdb.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/lib/rpmdb.c b/lib/rpmdb.c +index b51e9f09e..361f04150 100644 +--- a/lib/rpmdb.c ++++ b/lib/rpmdb.c +@@ -2470,8 +2470,7 @@ int rpmdbRebuild(const char * prefix, rpmts ts, + /* let's sanity check this record a bit, otherwise just skip it */ + if (!(headerIsEntry(h, RPMTAG_NAME) && + headerIsEntry(h, RPMTAG_VERSION) && +- headerIsEntry(h, RPMTAG_RELEASE) && +- headerIsEntry(h, RPMTAG_BUILDTIME))) ++ headerIsEntry(h, RPMTAG_RELEASE))) + { + rpmlog(RPMLOG_ERR, + _("header #%u in the database is bad -- skipping.\n"), +-- +2.27.0 +
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2