df1a3c6d21
Global, writable function pointers are low-hanging fruit for hijacking control flow with an overflow from a global buffer or an arbitrary write vulnerability. This moves the function pointer table into a dedicated page and makes it read-only at runtime, similar to RELRO. This increases the memory usage of the library by just under one page. This could be avoided by having the linker load the vdso by replacing weak symbols. It's not significant within the Zygote spawning model though because it's read-only after early init. Change-Id: Id7a49c96c1b15c2e1926528304b3c54a81e78caf