diff options
-rw-r--r-- | bfd/ChangeLog | 4 | ||||
-rw-r--r-- | bfd/xcofflink.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e0ed3a6..cbfad17 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2009-04-01 Richard Sandiford <rdsandiford@googlemail.com> + + * xcofflink.c (bfd_link_input_bfd): Fix buffer overrun. + 2009-04-01 Christophe Lyon <christophe.lyon@st.com> * elf32-arm.c (group_sections): Rewrite loops for better diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index 3752f7c..ac0f529 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -4268,14 +4268,13 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *finfo, bfd_coff_swap_lineno_in (input_bfd, linp, &lin); lin.l_addr.l_symndx = *indexp; bfd_coff_swap_lineno_out (output_bfd, &lin, linp); - linp += linesz; /* Copy the other entries, adjusting their addresses. */ linpend = linp + *lineno_counts * linesz; offset = (o->output_section->vma + o->output_offset - o->vma); - for (; linp < linpend; linp += linesz) + for (linp += linesz; linp < linpend; linp += linesz) { bfd_coff_swap_lineno_in (input_bfd, linp, &lin); lin.l_addr.l_paddr += offset; |