aboutsummaryrefslogtreecommitdiffstats
path: root/libar2simplified_decode_r.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-05-17 21:58:09 +0200
committerMattias Andrée <m@maandree.se>2026-05-17 21:58:09 +0200
commit09d245907c9018c606b84bed5d72e91d9ab88377 (patch)
tree91d72b72cdd9c4ed6004279757e4f79f9c9d937d /libar2simplified_decode_r.c
parentUpdate year (diff)
downloadlibar2simplified-09d245907c9018c606b84bed5d72e91d9ab88377.tar.gz
libar2simplified-09d245907c9018c606b84bed5d72e91d9ab88377.tar.bz2
libar2simplified-09d245907c9018c606b84bed5d72e91d9ab88377.tar.xz
Fix memory alignment bug
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rw-r--r--libar2simplified_decode_r.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/libar2simplified_decode_r.c b/libar2simplified_decode_r.c
index 545ecde..fa37aac 100644
--- a/libar2simplified_decode_r.c
+++ b/libar2simplified_decode_r.c
@@ -47,7 +47,8 @@ random_salt(char *out, size_t n, int (*random_byte_generator)(char *out, size_t
ssize_t r;
# ifdef AT_RANDOM
uintptr_t raddr_;
- uint16_t *raddr;
+ const unsigned char *raddr;
+ size_t j;
# endif
#endif
@@ -70,15 +71,9 @@ random_salt(char *out, size_t n, int (*random_byte_generator)(char *out, size_t
#if defined(__linux__) && defined(AT_RANDOM)
raddr_ = (uintptr_t)getauxval(AT_RANDOM);
if (raddr_) {
- raddr = (void *)raddr_;
- seed ^= (unsigned)raddr[0];
- seed ^= (unsigned)raddr[1];
- seed ^= (unsigned)raddr[2];
- seed ^= (unsigned)raddr[3];
- seed ^= (unsigned)raddr[4];
- seed ^= (unsigned)raddr[5];
- seed ^= (unsigned)raddr[6];
- seed ^= (unsigned)raddr[7];
+ raddr = (const void *)raddr_;
+ for (j = 0; j < 16; j++)
+ ((unsigned char *)&seed)[j % sizeof(seed)] ^= raddr[j];
}
#endif
srand(seed);