diff options
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/bfdio.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6e5652f..217b96c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2009-05-24 Alan Modra <amodra@bigpond.net.au> + + * bfdio.c (bfd_seek): Formatting. Ensure newly allocated memory + for BFD_IN_MEMORY is cleared. + (bfd_bwrite): Zero excess memory allocated. + 2009-05-22 Julian Brown <julian@codesourcery.com> * elf32-arm.c (THUMB16_BCOND_INSN, THUMB32_INSN, THUMB32_B_INSN): New diff --git a/bfd/bfdio.c b/bfd/bfdio.c index d3a295c..16bbf03 100644 --- a/bfd/bfdio.c +++ b/bfd/bfdio.c @@ -235,6 +235,8 @@ bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd) bim->size = 0; return 0; } + if (newsize > bim->size) + memset (bim->buffer + bim->size, 0, newsize - bim->size); } } memcpy (bim->buffer + abfd->where, ptr, (size_t) size); @@ -342,8 +344,8 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) if (abfd->where > bim->size) { - if ((abfd->direction == write_direction) || - (abfd->direction == both_direction)) + if (abfd->direction == write_direction + || abfd->direction == both_direction) { bfd_size_type newsize, oldsize; @@ -359,6 +361,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) bim->size = 0; return -1; } + memset (bim->buffer + oldsize, 0, newsize - oldsize); } } else |