Also a bugfix. The first time the section was read, the contents
didn't supply an addend.
* som.c (som_set_reloc_info): Sanity check offset. Do process
contents after reading. Tidy section->contents after freeing.
section->contents = contents;
deallocate_contents = 1;
}
- else if (rptr->addend == 0)
+ if (rptr->addend == 0
+ && offset - var ('L') <= section->size
+ && section->size - (offset - var ('L')) >= 4)
rptr->addend = bfd_get_32 (section->owner,
(section->contents
+ offset - var ('L')));
}
}
if (deallocate_contents)
- free (section->contents);
+ {
+ free (section->contents);
+ section->contents = NULL;
+ }
return count;