From a55bdb28f9004a2db49b3389efe09d99d93c256d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 29 Jan 2021 13:16:38 +0100 Subject: [PATCH] Assigning uint64_t from buffer might be misaligned in netmgr tests Resolve possible 8-byte unaligned access when assigning the magic value from the received buffer. --- lib/isc/tests/tcp_quota_test.c | 4 ++-- lib/isc/tests/tcp_test.c | 4 ++-- lib/isc/tests/tcpdns_test.c | 4 ++-- lib/isc/tests/tlsdns_test.c | 4 ++-- lib/isc/tests/udp_test.c | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/isc/tests/tcp_quota_test.c b/lib/isc/tests/tcp_quota_test.c index 17bec56f24..737c3c1d1f 100644 --- a/lib/isc/tests/tcp_quota_test.c +++ b/lib/isc/tests/tcp_quota_test.c @@ -259,7 +259,7 @@ tcp_connect_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, atomic_fetch_add(&creads, 1); - magic = *(uint64_t *)tcp_buffer_storage; + memmove(&magic, tcp_buffer_storage, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); tcp_buffer_length -= sizeof(magic); @@ -650,7 +650,7 @@ tcp_listen_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, if (tcp_buffer_length >= sizeof(magic)) { isc_nm_pauseread(handle); - magic = *(uint64_t *)tcp_buffer_storage; + memmove(&magic, tcp_buffer_storage, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); tcp_buffer_length -= sizeof(magic); diff --git a/lib/isc/tests/tcp_test.c b/lib/isc/tests/tcp_test.c index 7e911fe948..dc6aa5dcb8 100644 --- a/lib/isc/tests/tcp_test.c +++ b/lib/isc/tests/tcp_test.c @@ -287,7 +287,7 @@ tcp_connect_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, while (tcp_buffer_length >= sizeof(magic)) { atomic_fetch_add(&creads, 1); - magic = *(uint64_t *)tcp_buffer_storage; + memmove(&magic, tcp_buffer_storage, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); tcp_buffer_length -= sizeof(magic); @@ -957,7 +957,7 @@ tcp_listen_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, tcp_buffer_length += region->length; while (tcp_buffer_length >= sizeof(magic)) { - magic = *(uint64_t *)tcp_buffer_storage; + memmove(&magic, tcp_buffer_storage, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); tcp_buffer_length -= sizeof(magic); diff --git a/lib/isc/tests/tcpdns_test.c b/lib/isc/tests/tcpdns_test.c index f576fe8bd0..ecd68c4cf1 100644 --- a/lib/isc/tests/tcpdns_test.c +++ b/lib/isc/tests/tcpdns_test.c @@ -328,7 +328,7 @@ tcpdns_connect_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, atomic_fetch_add(&creads, 1); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); @@ -478,7 +478,7 @@ tcpdns_listen_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, assert_int_equal(region->length, sizeof(magic)); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); if (magic == send_magic) { diff --git a/lib/isc/tests/tlsdns_test.c b/lib/isc/tests/tlsdns_test.c index b7bef12cca..45da430270 100644 --- a/lib/isc/tests/tlsdns_test.c +++ b/lib/isc/tests/tlsdns_test.c @@ -341,7 +341,7 @@ tlsdns_connect_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, atomic_fetch_add(&creads, 1); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); @@ -493,7 +493,7 @@ tlsdns_listen_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, assert_int_equal(region->length, sizeof(magic)); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); if (magic == send_magic) { diff --git a/lib/isc/tests/udp_test.c b/lib/isc/tests/udp_test.c index 00210a18e9..f78bcf9ec7 100644 --- a/lib/isc/tests/udp_test.c +++ b/lib/isc/tests/udp_test.c @@ -285,7 +285,7 @@ udp_listen_recv_cb(isc_nmhandle_t *handle, isc_result_t eresult, assert_int_equal(region->length, sizeof(send_magic)); atomic_fetch_add(&sreads, 1); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic); isc_nm_send(handle, region, udp_listen_send_cb, NULL); @@ -552,7 +552,7 @@ udp_connect_recv_cb(isc_nmhandle_t *handle, isc_result_t eresult, atomic_fetch_add(&creads, 1); - magic = *(uint64_t *)region->base; + memmove(&magic, region->base, sizeof(magic)); assert_true(magic == stop_magic || magic == send_magic);