diff options
author | Evgenii Stepanov <eugenis@google.com> | 2020-06-08 16:21:35 -0700 |
---|---|---|
committer | Evgenii Stepanov <eugenis@google.com> | 2020-06-17 17:28:28 -0700 |
commit | a8cf3fef2aa2201014c35c3487da222ccfedfc1c (patch) | |
tree | 476df9275aa1402085207d231162a49867240378 /linker/linker_soinfo.cpp | |
parent | ad4b47c4290d6291e4280707688ce54c9bf9b72c (diff) |
Add randomized padding around shared library mappings.
Improve ASLR by increasing the randomly sized gaps between shared
library mappings, and keep them mapped PROT_NONE.
Bug: 158113540
Test: look at /proc/$$/maps
Change-Id: Ie72c84047fb624fe2ac8b7744b2a2d0d255ea974
Diffstat (limited to 'linker/linker_soinfo.cpp')
-rw-r--r-- | linker/linker_soinfo.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/linker/linker_soinfo.cpp b/linker/linker_soinfo.cpp index 4f67003b8..088c17dfc 100644 --- a/linker/linker_soinfo.cpp +++ b/linker/linker_soinfo.cpp @@ -900,6 +900,24 @@ void soinfo::generate_handle() { g_soinfo_handles_map[handle_] = this; } +void soinfo::set_map_start(ElfW(Addr) map_start) { + CHECK(has_min_version(6)); + map_start_ = map_start; +} +ElfW(Addr) soinfo::get_map_start() const { + CHECK(has_min_version(6)); + return map_start_; +} + +void soinfo::set_map_size(size_t map_size) { + CHECK(has_min_version(6)); + map_size_ = map_size; +} +size_t soinfo::get_map_size() const { + CHECK(has_min_version(6)); + return map_size_; +} + // TODO(dimitry): Move SymbolName methods to a separate file. uint32_t calculate_elf_hash(const char* name) { |