On Thu, 4 Oct 2007 21:47:30 +0900, KAMEZAWA Hiroyuki wrote:So we tell users "Even if you protectted half of mmap's space, but you must to register all space to kernel. " ?On Thu, 04 Oct 2007 21:33:12 +0900
Shi Weihua <shiwh@xxxxxxxxxxxxxx> wrote:
KAMEZAWA Hiroyuki wrote::You have to protect the top of *registered* sigaltstack.On Thu, 04 Oct 2007 20:56:14 +0900[What the test code want to do]
Shi Weihua <shiwh@xxxxxxxxxxxxxx> wrote:
stack.ss_sp = addr + pagesize;Here is bad. stack,ss_sp = addr;
stack.ss_flags = 0;
stack.ss_size = pagesize;
stack.ss_flags = 0;
stack.ss_size = pagesize * 2;
addr+pagesize*2 - addr+pagesize -> sigaltstack
addr+pagesize - addr -> protected region
The code want to catch overflow when esp enter the protected region.
The reason of wraparound is %esp will be set to the bottom of sigaltstack
if it is not on sigaltstack area when signaled.
What you have to do is protect the top of registerd sigaltstack.
If %esp is in the range of registerd sigaltstack at SEGV, wraparound
will stop.
Exactly right. You mprotect or munmap the end of the altstack,
not the area beyond it.
/Mikael