From 55c0061edd2ad838f407b926fb1ce375b3cf208a Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Fri, 24 Apr 1992 01:42:41 +0000 Subject: [PATCH] aoutx.h (aout__swap_exec_header_in): Zero out the internal_exec structure before initializing the fields that are used, so that the unused fields are in a known state. Two of these structures are memcmp'd so any fields not explicitly initialized must be set to a known state. --- bfd/ChangeLog | 6 ++++++ bfd/aoutx.h | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 580d114686a..33aa51cc56d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +Thu Apr 23 18:37:55 1992 Fred Fish (fnf@cygnus.com) + + * aoutx.h (aout__swap_exec_header_in): Zero out the + internal_exec structure before initializing the fields that + are used, so that the unused fields are in a known state. + Wed Apr 22 09:36:08 1992 Fred Fish (fnf@cygnus.com) * tekhex.c (struct data_struct): Convert from typedef that diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 95c1a9278be..c1b36d4fe2e 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -222,6 +222,11 @@ DEFUN(NAME(aout,swap_exec_header_in),(abfd, raw_bytes, execp), { struct external_exec *bytes = (struct external_exec *)raw_bytes; + /* The internal_exec structure has some fields that are unused in this + configuration (IE for i960), so ensure that all such uninitialized + fields are zero'd out. There are places where two of these structs + are memcmp'd, and thus the contents do matter. */ + memset (execp, 0, sizeof (struct internal_exec)); /* Now fill in fields in the execp, from the bytes in the raw data. */ execp->a_info = bfd_h_get_32 (abfd, bytes->e_info); execp->a_text = GET_WORD (abfd, bytes->e_text); @@ -677,7 +682,7 @@ boolean if (abfd->flags & (D_PAGED|WP_TEXT)) { bfd_size_type text_pad = - BFD_ALIGN(text_size, adata(abfd).segment_size) + BFD_ALIGN(text_size, adata(abfd).page_size) - text_size; text_end += text_pad; obj_textsec(abfd)->_raw_size += text_pad; @@ -1687,7 +1692,8 @@ DEFUN(NAME(aout,print_symbol),(ignore_abfd, afile, symbol, how), if (section_code == 'U') fprintf(file, " "); - fprintf_vma(file, symbol->value+symbol->section->vma); + else + fprintf_vma(file, symbol->value+symbol->section->vma); if (section_code == '?') { int type_code = aout_symbol(symbol)->type & 0xff; -- 2.30.2