commit 9e019ed26bf2ab46040099dadaf778dec436bc4a (tree)
parent c7a37967340da7e21281fca09e82f8fffb3f15d8
Author: Timon Kruiper <timonkruiper@gmail.com>
Date: Tue, 31 Mar 2020 20:15:09 +0200
Fix possible unaligned ptr from `getauxval`
This caused SIGILL on armv7a-linux
Diffstat:
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/os.cpp b/src/os.cpp
@@ -1456,7 +1456,10 @@ static void init_rand() {
memcpy(&seed, bytes, sizeof(unsigned));
srand(seed);
#elif defined(ZIG_OS_LINUX)
- srand(*((unsigned*)getauxval(AT_RANDOM)));
+ unsigned char *ptr_random = (unsigned char*)getauxval(AT_RANDOM);
+ unsigned seed;
+ memcpy(&seed, ptr_random, sizeof(seed));
+ srand(seed);
#else
int fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);
if (fd == -1) {