5
linux14% gcc -I../h test_memprotect.c
8
Page violation (sig=b,code=2b,scp=2b,addr=2b,fault_adr=804a005)
10
Reading pp[5] (addr=804a005) 10
21
/* ulong may have been defined in mp.h but the define is no longer needed */
24
#define PROT_READ_WRITE (PROT_READ | PROT_WRITE |PROT_EXEC)
27
#include <sys/vmuser.h>
28
#define PROT_READ RDONLY
29
#define PROT_READ_WRITE UDATAKEY
41
#include <asm/signal.h>
42
#include <asm/sigcontext.h>
45
handler(sig,code,scp,addr)
47
struct sigcontext *scp;
50
struct sigcontext_struct *bil= (void *) & code;
51
printf("\nPage violation (sig=%x,code=%x,scp=%x,addr=%x,fault_adr=%x)",sig,code,scp,addr,GET_FAULT_ADDR(sig,code,scp,addr));
53
mprotect(pp, psize, PROT_READ | PROT_WRITE);
61
signal(SIGSEGV, handler);
62
signal(SIGBUS, handler);
63
psize = getpagesize();
64
p = malloc(3 * psize);
66
pp = (char *)( ((a / psize)+ 1) * psize);
67
printf("[val=%d]",mprotect(pp, psize, PROT_READ));
69
printf("\n\nReading pp[5] (addr=%x) %d\n",&pp[5], pp[5]);