summaryrefslogtreecommitdiffstats
path: root/lib/libcrypto/dsa/dsa_lib.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2018-04-12 17:15:34 +0000
committerderaadt <deraadt@openbsd.org>2018-04-12 17:15:34 +0000
commit2d9f5a384f759e3c7fde095c26d4d6ddb18a90e4 (patch)
treeab58e4371c5126adc7f59bc8f1eeb1020f2383d0 /lib/libcrypto/dsa/dsa_lib.c
parentImplement MAP_STACK option for mmap(). Synchronous faults (pagefault and (diff)
downloadwireguard-openbsd-2d9f5a384f759e3c7fde095c26d4d6ddb18a90e4.tar.xz
wireguard-openbsd-2d9f5a384f759e3c7fde095c26d4d6ddb18a90e4.zip
(file missed from previous commit)
Implement MAP_STACK option for mmap(). Synchronous faults (pagefault and syscall) confirm the stack register points at MAP_STACK memory, otherwise SIGSEGV is delivered. sigaltstack() and pthread_attr_setstack() are modified to create a MAP_STACK sub-region which satisfies alignment requirements. Observe that MAP_STACK can only be set/cleared by mmap(), which zeroes the contents of the region -- there is no mprotect() equivalent operation, so there is no MAP_STACK-adding gadget. This opportunistic software-emulation of a stack protection bit makes stack-pivot operations during ROPchain fragile (kind of like removing a tool from the toolbox). original discussion with tedu, uvm work by stefan, testing by mortimer
Diffstat (limited to 'lib/libcrypto/dsa/dsa_lib.c')
0 files changed, 0 insertions, 0 deletions