summaryrefslogtreecommitdiff
path: root/linker/linker.cpp
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2015-06-29 14:48:25 -0700
committerDmitriy Ivanov <dimitry@google.com>2015-06-29 15:14:28 -0700
commit7271caf93db6897cdbcfca169441045bb52de61b (patch)
tree36114c9985025d3646c686957545bb9bb7a7d114 /linker/linker.cpp
parent46d24d12e167a0b5afa4ded218aa4db0a477141a (diff)
Lock on dl_interate_phdr
There is possibility of someone dlclosing a library while dl_iterate_phdr in progress which can lead to dl_iterate_phdr calling callback with invalid address if it was unmapped by dlclose. Bug: http://b/22047255 Change-Id: I3fc0d9fd2c51fb36fd34cb035f37271fa893a7be (cherry picked from commit f7d5bf334dc4bc5b7399d4c8268e1b0bf676548f)
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r--linker/linker.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 5d54089fd..c6e569a50 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -393,7 +393,7 @@ _Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int* pcount) {
// Here, we only have to provide a callback to iterate across all the
// loaded libraries. gcc_eh does the rest.
-int dl_iterate_phdr(int (*cb)(dl_phdr_info* info, size_t size, void* data), void* data) {
+int do_dl_iterate_phdr(int (*cb)(dl_phdr_info* info, size_t size, void* data), void* data) {
int rv = 0;
for (soinfo* si = solist; si != nullptr; si = si->next) {
dl_phdr_info dl_info;