mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
binutils: Fix CVE-2025-7545
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] (From OE-Core rev: 3af3d09684caddb4c4dfd45a30e3721f8f6140e4) 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>
This commit is contained in:
committed by
Richard Purdie
parent
fe4e74cbe9
commit
5004d1075a
@@ -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 \
|
||||
"
|
||||
|
||||
@@ -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++;
|
||||
Reference in New Issue
Block a user