authorgravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2020-03-31 20:15:09+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-31 15:26:06-04:00
log9e019ed26bf2ab46040099dadaf778dec436bc4a
tree97fbc7f93c0ddb91e84eeba4fad0fb81f6077ada
parentc7a37967340da7e21281fca09e82f8fffb3f15d8

Fix possible unaligned ptr from `getauxval`

This caused SIGILL on armv7a-linux

1 files changed, 4 insertions(+), 1 deletions(-)

src/os.cpp+4-1
...@@ -1456,7 +1456,10 @@ static void init_rand() {...@@ -1456,7 +1456,10 @@ static void init_rand() {
1456 memcpy(&seed, bytes, sizeof(unsigned));1456 memcpy(&seed, bytes, sizeof(unsigned));
1457 srand(seed);1457 srand(seed);
1458#elif defined(ZIG_OS_LINUX)1458#elif defined(ZIG_OS_LINUX)
1459 srand(*((unsigned*)getauxval(AT_RANDOM)));1459 unsigned char *ptr_random = (unsigned char*)getauxval(AT_RANDOM);
1460 unsigned seed;
1461 memcpy(&seed, ptr_random, sizeof(seed));
1462 srand(seed);
1460#else1463#else
1461 int fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);1464 int fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);
1462 if (fd == -1) {1465 if (fd == -1) {