void __init_stack_protector() { if (__stack_chk_guard != 0) return; bool done = false; int fd = open("/dev/random", O_RDONLY, 0); if (fd >= 0) { done = read(fd, &__stack_chk_guard, sizeof(__stack_chk_guard)) == sizeof(__stack_chk_guard); close(fd); } if (!done) { ((unsigned char *)(void *)__stack_chk_guard)[0] = 0; ((unsigned char *)(void *)__stack_chk_guard)[1] = 0; ((unsigned char *)(void *)__stack_chk_guard)[2] = '\n'; ((unsigned char *)(void *)__stack_chk_guard)[3] = 0xff; } }