]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
binutils: Fix CVE-2025-7545
authorDeepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Thu, 17 Jul 2025 11:35:29 +0000 (04:35 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 21 Jul 2025 21:59:31 +0000 (22:59 +0100)
objcopy: Don't extend the output section size
Since the output section contents are copied from the input, don't
extend the output section size beyond the input section size.

Backport a patch from upstream to fix CVE-2025-7545
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=08c3cbe5926e4d355b5cb70bbec2b1eeb40c2944]

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/binutils/binutils-2.44.inc
meta/recipes-devtools/binutils/binutils/0020-CVE-2025-7545.patch [new file with mode: 0644]

index 10a4d2c92a763da16156dadc890b77fb6dd46a64..3313e011bfd50414bb1474e93a93f91aae292886 100644 (file)
@@ -44,4 +44,5 @@ SRC_URI = "\
      file://0019-CVE-2025-5244.patch \
      file://0019-CVE-2025-3198.patch \
      file://0020-CVE-2025-7546.patch \
+     file://0020-CVE-2025-7545.patch \
 "
diff --git a/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-7545.patch b/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-7545.patch
new file mode 100644 (file)
index 0000000..062d672
--- /dev/null
@@ -0,0 +1,39 @@
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Sat, 21 Jun 2025 06:36:56 +0800
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h08c3cbe5926e4d355b5cb70bbec2b1eeb40c2944]
+CVE: CVE-2025-7545
+
+Since the output section contents are copied from the input, don't
+extend the output section size beyond the input section size.
+
+       PR binutils/33049
+       * objcopy.c (copy_section): Don't extend the output section
+       size beyond the input section size.
+
+Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
+
+diff --git a/binutils/objcopy.c b/binutils/objcopy.c
+index e2e6bd7e..3cbb3977 100644
+--- a/binutils/objcopy.c
++++ b/binutils/objcopy.c
+@@ -4634,6 +4634,7 @@ copy_section (bfd *ibfd, sec_ptr isection, bfd *obfd)
+         char *to = (char *) memhunk;
+         char *end = (char *) memhunk + size;
+         int i;
++        bfd_size_type memhunk_size = size;
+         /* If the section address is not exactly divisible by the interleave,
+            then we must bias the from address.  If the copy_byte is less than
+@@ -4653,6 +4654,11 @@ copy_section (bfd *ibfd, sec_ptr isection, bfd *obfd)
+             }
+         size = (size + interleave - 1 - copy_byte) / interleave * copy_width;
++
++          /* Don't extend the output section size.  */
++          if (size > memhunk_size)
++            size = memhunk_size;
++        
+         osection->lma /= interleave;
+         if (copy_byte < extra)
+           osection->lma++;