backport some patches from upstream

This commit is contained in:
renxichen 2023-03-08 06:54:39 +00:00
parent 6bb50bbb22
commit 856cb65b43
6 changed files with 154 additions and 1 deletions

View File

@ -0,0 +1,26 @@
From 7fcdfd3b40f69af6a1d4980683859eef05f39b4e Mon Sep 17 00:00:00 2001
From: xujing <xujing125@huawei.com>
Date: Fri, 25 Nov 2022 16:48:34 +0800
Subject: [PATCH] Fix BANames leak in handlePreambleTag
The "BANames" is alloced from popParseArgvString but not freed
when spec->packages != pkg. Fix it.
---
build/parsePreamble.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/build/parsePreamble.c b/build/parsePreamble.c
index 119551cf6..c4d137cf7 100644
--- a/build/parsePreamble.c
+++ b/build/parsePreamble.c
@@ -961,6 +961,7 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
BANames = _free(BANames);
goto exit;
}
+ BANames = _free(BANames);
headerPutString(pkg->header, RPMTAG_ARCH, "noarch");
}
if (!BACount)
--
2.27.0

View File

@ -0,0 +1,28 @@
From 01196e00beefc2ba6f7f0787350c5dd76891829a Mon Sep 17 00:00:00 2001
From: xujing <xujing125@huawei.com>
Date: Fri, 25 Nov 2022 17:11:22 +0800
Subject: [PATCH] Fix elf leak in getElfColor
The "elf" is leaked in getElfColor when gelf_getehdr return fail.
---
build/rpmfc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/build/rpmfc.c b/build/rpmfc.c
index d35c148b9..06205469c 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -1145,8 +1145,9 @@ static uint32_t getElfColor(const char *fn)
color = RPMFC_ELF32;
break;
}
- elf_end(elf);
}
+ if (elf)
+ elf_end(elf);
close(fd);
}
return color;
--
2.27.0

View File

@ -0,0 +1,27 @@
From 3b0b9d491f5828a40c15b76b4a19ca00006cf81e Mon Sep 17 00:00:00 2001
From: xujing <xujing125@huawei.com>
Date: Mon, 28 Nov 2022 11:02:47 +0800
Subject: [PATCH] Fix memleak when running %generate_buildrequires
The "output[i]" is alloced in argvSplit but not freed when running
%generate_buildrequires. Fix it.
---
build/build.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/build.c b/build/build.c
index 4437f6c9c..34e01d5be 100644
--- a/build/build.c
+++ b/build/build.c
@@ -279,7 +279,7 @@ static int doBuildRequires(rpmSpec spec, int test)
exit:
freeStringBuf(sb_stdout);
- free(output);
+ argvFree(output);
return rc;
}
--
2.27.0

View File

@ -0,0 +1,35 @@
From c013821c0c9350b67d9f9a02848e1a7f87fa180b Mon Sep 17 00:00:00 2001
From: xujing <xujing125@huawei.com>
Date: Fri, 25 Nov 2022 17:04:11 +0800
Subject: [PATCH] Fix prog leak in parseScript
The "prog" will be alloced when using "-p" options, which cause src
"proc" leak. Add "origproc" to point to src "proc" to fix it.
---
build/parseScript.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/build/parseScript.c b/build/parseScript.c
index df7919238..f8b693ac6 100644
--- a/build/parseScript.c
+++ b/build/parseScript.c
@@ -102,6 +102,7 @@ int parseScript(rpmSpec spec, int parsePart)
poptContext optCon = NULL;
char *name = NULL;
char *prog = xstrdup("/bin/sh");
+ char *origprog = prog;
char *file = NULL;
int priority = 1000000;
struct poptOption optionsTable[] = {
@@ -482,6 +483,8 @@ exit:
free(reqargs);
freeStringBuf(sb);
free(progArgv);
+ if (origprog != prog)
+ free(origprog);
free(prog);
free(name);
free(file);
--
2.27.0

View File

@ -0,0 +1,28 @@
From 6130bd31038ff17a03fcac6ec7e41ac744163dde Mon Sep 17 00:00:00 2001
From: xujing <xujing125@huawei.com>
Date: Sat, 26 Nov 2022 11:39:48 +0800
Subject: [PATCH] Fix *sbp leak when running rpmbuild with --quiet
When running rpmbuild with --quiet, the "*sbp" may be alloced many
times in buildSpec by calling doScript but only freed once. Fix it.
---
build/build.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/build/build.c b/build/build.c
index e50c378..28fa7c8 100644
--- a/build/build.c
+++ b/build/build.c
@@ -199,6 +199,9 @@ rpmRC doScript(rpmSpec spec, rpmBuildFlags what, const char *name,
buildCmd = rpmExpand(mCmd, " ", scriptName, NULL);
(void) poptParseArgvString(buildCmd, &argc, &argv);
+ if (sb_stdoutp && *sb_stdoutp)
+ *sb_stdoutp = freeStringBuf(*sb_stdoutp);
+
rpmlog(RPMLOG_NOTICE, _("Executing(%s): %s\n"), name, buildCmd);
if (rpmfcExec((ARGV_const_t)argv, NULL, sb_stdoutp, 1,
spec->buildSubdir)) {
--
2.27.0

View File

@ -1,6 +1,6 @@
Name: rpm
Version: 4.15.1
Release: 47
Release: 48
Summary: RPM Package Manager
License: GPLv2+
URL: http://www.rpm.org/
@ -193,6 +193,12 @@ Patch173: backport-Fix-Header-leak-when-running-rpm2cpio.patch
Patch174: backport-Use-unsigned-integers-more-consistently-in-the-handl.patch
Patch175: backport-Revert-back-to-implicit-database-creation-for-now.patch
Patch176: backport-Fix-BANames-leak-in-handlePreambleTag.patch
Patch177: backport-Fix-prog-leak-in-parseScript.patch
Patch178: backport-Fix-elf-leak-in-getElfColor.patch
Patch179: backport-Fix-sbp-leak-when-running-rpmbuild-with-quiet.patch
Patch180: backport-Fix-memleak-when-running-generate_buildrequires.patch
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: dbus-devel fakechroot elfutils-devel elfutils-libelf-devel ima-evm-utils
@ -475,6 +481,9 @@ make check || (cat tests/rpmtests.log; exit 0)
%{_mandir}/man1/gendiff.1*
%changelog
* Wed Mar 08 2023 renhongxun<renhongxun@h-partners.com> - 4.15.1-48
- backport some patches from upstream
* Wed Feb 22 2023 gaoyusong<gaoyusong2@huawei.com> - 4.15.1-47
- optimize digest list feature patch format