rtld: Parse notes later (bug# 2376)
authorJohn Marino <draco@marino.st>
Tue, 14 Aug 2012 14:38:31 +0000 (16:38 +0200)
committerJohn Marino <draco@marino.st>
Tue, 14 Aug 2012 14:44:44 +0000 (16:44 +0200)
Parse notes only after object structure has been allocated.

Taken-from: FreeBSD svn 239019
DragonFly-bug: <http://bugs.dragonflybsd.org/issue/2376>

libexec/rtld-elf/map_object.c

index 215ae0c..14cedfc 100644 (file)
@@ -153,7 +153,6 @@ map_object(int fd, const char *path, const struct stat *sb)
                break;
            note_start = (Elf_Addr)(char *)hdr + phdr->p_offset;
            note_end = note_start + phdr->p_filesz;
                break;
            note_start = (Elf_Addr)(char *)hdr + phdr->p_offset;
            note_end = note_start + phdr->p_filesz;
-           digest_notes(obj, note_start, note_end);
            break;
        }
 
            break;
        }
 
@@ -299,6 +298,8 @@ map_object(int fd, const char *path, const struct stat *sb)
         obj->relro_page = obj->relocbase + trunc_page(relro_page);
         obj->relro_size = round_page(relro_size);
     }
         obj->relro_page = obj->relocbase + trunc_page(relro_page);
         obj->relro_size = round_page(relro_size);
     }
+    if (note_start < note_end)
+       digest_notes(obj, note_start, note_end);
     return obj;
 }
 
     return obj;
 }