From bf054873068919b13d46c68e6a21709074e1ee61 Mon Sep 17 00:00:00 2001 From: liningjie Date: Wed, 23 Aug 2023 15:26:28 +0800 Subject: [PATCH] fix CVE-2022-47008 --- CVE-2022-47008.patch | 61 ++++++++++++++++++++++++++++++++++++++++++++ binutils.spec | 6 ++++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 CVE-2022-47008.patch diff --git a/CVE-2022-47008.patch b/CVE-2022-47008.patch new file mode 100644 index 0000000..8dffd82 --- /dev/null +++ b/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 bafdffd..a30708f 100644 --- a/binutils.spec +++ b/binutils.spec @@ -1,7 +1,7 @@ Summary: Binary utilities Name: binutils Version: 2.34 -Release: 22 +Release: 23 License: GPLv3+ URL: https://sourceware.org/binutils @@ -59,6 +59,7 @@ Patch42: backport-0001-CVE-2021-42574.patch Patch43: backport-0002-CVE-2021-42574.patch Patch44: Fix-gold-relocation-offset.patch Patch45: Fix-gold-adrp-signed-shift.patch +Patch46: CVE-2022-47008.patch Provides: bundled(libiberty) @@ -337,6 +338,9 @@ fi %{_infodir}/bfd*info* %changelog +* Wed Aug 23 2023 liningjie - 2.34-23 +- fix CVE-2022-47008 + * Tue Oct 18 2022 konglidong - 2.34-22 - DESC:fix the changelog exception macro -- Gitee