From fda3dd480b93751a941900aa303dcdc28a24700c Mon Sep 17 00:00:00 2001 From: liningjie Date: Wed, 23 Aug 2023 19:23:34 +0800 Subject: [PATCH] fix CVE-2022-47008 --- backport-CVE-2022-47008.patch | 61 +++++++++++++++++++++++++++++++++++ binutils.spec | 6 +++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 backport-CVE-2022-47008.patch diff --git a/backport-CVE-2022-47008.patch b/backport-CVE-2022-47008.patch new file mode 100644 index 0000000..8dffd82 --- /dev/null +++ b/backport-CVE-2022-47008.patch @@ -0,0 +1,61 @@ +From d6e1d48c83b165c129cb0aa78905f7ca80a1f682 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Fri, 17 Jun 2022 09:13:38 +0930 +Subject: [PATCH] PR29255, memory leak in make_tempdir + + PR 29255 + * bucomm.c (make_tempdir, make_tempname): Free template on all + failure paths. +--- + binutils/bucomm.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +diff --git a/binutils/bucomm.c b/binutils/bucomm.c +index fdc2209df9c..4395cb9f7f5 100644 +--- a/binutils/bucomm.c ++++ b/binutils/bucomm.c +@@ -537,8 +537,9 @@ make_tempname (const char *filename, int *ofd) + #else + tmpname = mktemp (tmpname); + if (tmpname == NULL) +- return NULL; +- fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600); ++ fd = -1; ++ else ++ fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600); + #endif + if (fd == -1) + { +@@ -556,22 +557,23 @@ char * + make_tempdir (const char *filename) + { + char *tmpname = template_in_dir (filename); ++ char *ret; + + #ifdef HAVE_MKDTEMP +- return mkdtemp (tmpname); ++ ret = mkdtemp (tmpname); + #else +- tmpname = mktemp (tmpname); +- if (tmpname == NULL) +- return NULL; ++ ret = mktemp (tmpname); + #if defined (_WIN32) && !defined (__CYGWIN32__) + if (mkdir (tmpname) != 0) +- return NULL; ++ ret = NULL; + #else + if (mkdir (tmpname, 0700) != 0) +- return NULL; ++ ret = NULL; + #endif +- return tmpname; + #endif ++ if (ret == NULL) ++ free (tmpname); ++ return ret; + } + + /* Parse a string into a VMA, with a fatal error if it can't be +-- +2.39.3 diff --git a/binutils.spec b/binutils.spec index 2347725..9ef9a2a 100644 --- a/binutils.spec +++ b/binutils.spec @@ -1,7 +1,7 @@ Summary: Binary utilities Name: binutils Version: 2.37 -Release: 17 +Release: 18 License: GPLv3+ URL: https://sourceware.org/binutils @@ -45,6 +45,7 @@ Patch47: backport-PR28186-SEGV-elf.c-7991-30-in-_bfd_elf_fixup_group_sections.pa Patch48: backport-PR28422-build_id-use-after-free.patch Patch49: backport-PR28540-segmentation-fault-on-NULL-byte_get.patch Patch50: Fix-gold-relocation-offset-and-adrp-signed-shife.patch +Patch51: backport-CVE-2022-47008.patch @@ -398,6 +399,9 @@ fi %{_infodir}/bfd*info* %changelog +* Wed Aug 23 2023 liningjie - 2.37-18 +- fix CVE-2022-47008 + * Wed Aug 23 2023 eastb233 - 2.37-17 - Do some CVE fix and typo fix synchronized from 22.03-LTS-Next branch - It contains, -- Gitee