aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-11-07 06:16:26 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-11-07 06:16:26 +0000
commitee7da987c93489fb4c8f56ce32a1d0d56a48b2ea (patch)
treeed0cd4c07467bd6d6eaa48a18cc2fe417f04e487 /binutils
parentddda4adc286e6a6e37702141f891a04552f18006 (diff)
downloadgdb-ee7da987c93489fb4c8f56ce32a1d0d56a48b2ea.zip
gdb-ee7da987c93489fb4c8f56ce32a1d0d56a48b2ea.tar.gz
gdb-ee7da987c93489fb4c8f56ce32a1d0d56a48b2ea.tar.bz2
Don't read beyond section end
* objcopy.c (copy_section): Don't read beyond section end.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/objcopy.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 84ea185..688d569 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2012-11-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (copy_section): Don't read beyond section end.
+
2012-11-06 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14567
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index f44ebcd..4860864 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -2823,7 +2823,11 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
for (; from < end; from += interleave)
for (i = 0; i < copy_width; i++)
- *to++ = from[i];
+ {
+ if (&from[i] >= end)
+ break;
+ *to++ = from[i];
+ }
size = (size + interleave - 1 - copy_byte) / interleave * copy_width;
osection->lma /= interleave;