From: Neil Horman Date: Fri, 26 Apr 2024 16:38:38 +0000 (-0400) Subject: Fix alignment errors in hashtable fuzzer X-Git-Tag: openssl-3.4.0-alpha1~618 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c04901be78768eb698d575d0b046940a5cb2aa5b;p=thirdparty%2Fopenssl.git Fix alignment errors in hashtable fuzzer we extract several values (uint16_t and uint64_t from the fuzzer buff passed in, but they weren't aligned on 2 and 8 byte boundaries. Adjust the fuzzer to memcpy data to the target variables to avoid unalignment issues Fixes #24272 Reviewed-by: Paul Dale Reviewed-by: Tom Cosgrove (Merged from https://github.com/openssl/openssl/pull/24276) --- diff --git a/fuzz/hashtable.c b/fuzz/hashtable.c index 64a736d8151..35cf9c8f3ba 100644 --- a/fuzz/hashtable.c +++ b/fuzz/hashtable.c @@ -142,7 +142,7 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) * parse out our operation flags and key */ op_flags = buf[0]; - keyval = *((uint16_t *)&buf[1]); + memcpy(&keyval, &buf[1], sizeof(uint16_t)); /* * Initialize our key @@ -177,7 +177,7 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) rc_prediction = 0; } - valptr->value = *(uint64_t *)&buf[3]; + memcpy(&valptr->value, &buf[3], sizeof(uint64_t)); /* * do the insert/replace */