#include #include #include #include static int print_personality (unsigned long persona, char const *msg) { int pers, err; errno = 0; pers = personality (persona); err = errno; printf ("personality (%s) returns 0x%x, errno=%d (%s)\n", msg, pers, err, strerror (err)); errno = err; return pers; } int main (void) { int pers0, pers1, pers2; pers0 = print_personality (0xffffffff, "0xffffffff"); if (pers0 & ADDR_NO_RANDOMIZE) printf ("ADDR_NO_RANDOMIZE was set\n"); else { printf ("ADDR_NO_RANDOMIZE was clear\n"); pers1 = print_personality (pers0 | ADDR_NO_RANDOMIZE, "pers0 | ADDR_NO_RANDOMIZE"); if (pers1 < 0) printf ("ADDR_NO_RANDOMIZE could not be set\n"); else { if (pers1 != pers0) printf ("pers1 != pers0 ?\n"); printf ("ADDR_NO_RANDOMIZE set successfully\n"); pers2 = print_personality (0xffffffff, "0xffffffff"); if (pers2 != (pers0 | ADDR_NO_RANDOMIZE)) printf ("pers2 != (pers0 | ADDR_NO_RANDOMIZE) ?\n"); } } return 0; }