* elf-nacl.c (segment_eligible_for_headers): Disallow writable segments.
This commit is contained in:
Roland McGrath 2012-11-29 19:07:53 +00:00
parent ea5e6b0efe
commit a0c82a2bce
2 changed files with 8 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2012-11-29 Roland McGrath <mcgrathr@google.com>
* elf-nacl.c (segment_eligible_for_headers): Disallow writable segments.
2012-11-26 Roland McGrath <mcgrathr@google.com>
* elf-nacl.c (nacl_modify_segment_map): Don't crash when INFO is null.

View File

@ -43,9 +43,9 @@ segment_executable (struct elf_segment_map *seg)
}
/* Determine if this segment is eligible to receive the file and program
headers. It must be non-executable and have contents. Its first
section must start far enough past the page boundary to allow space
for the headers. */
headers. It must be read-only, non-executable, and have contents.
Its first section must start far enough past the page boundary to
allow space for the headers. */
static bfd_boolean
segment_eligible_for_headers (struct elf_segment_map *seg,
bfd_vma maxpagesize, bfd_vma sizeof_headers)
@ -56,7 +56,7 @@ segment_eligible_for_headers (struct elf_segment_map *seg,
return FALSE;
for (i = 0; i < seg->count; ++i)
{
if (seg->sections[i]->flags & SEC_CODE)
if ((seg->sections[i]->flags & (SEC_CODE|SEC_READONLY)) != SEC_READONLY)
return FALSE;
if (seg->sections[i]->flags & SEC_HAS_CONTENTS)
any_contents = TRUE;