]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Assigning uint64_t from buffer might be misaligned in netmgr tests
authorOndřej Surý <ondrej@isc.org>
Fri, 29 Jan 2021 12:16:38 +0000 (13:16 +0100)
committerOndřej Surý <ondrej@isc.org>
Thu, 4 Mar 2021 14:02:24 +0000 (15:02 +0100)
Resolve possible 8-byte unaligned access when assigning the magic
value from the received buffer.

lib/isc/tests/tcp_quota_test.c
lib/isc/tests/tcp_test.c
lib/isc/tests/tcpdns_test.c
lib/isc/tests/tlsdns_test.c
lib/isc/tests/udp_test.c

index 17bec56f24171598654662bb3d9b030763aec9b1..737c3c1d1facd282eb345cbf960b510cac40f9ef 100644 (file)
@@ -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);
index 7e911fe94802de5835a08a217e64373c9d482a22..dc6aa5dcb829f196250718576d2b5e088f2675f4 100644 (file)
@@ -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);
index f576fe8bd0cc56cfd577e8c34c1847424669c660..ecd68c4cf1aa29a2980a1ef99d3593570ea771a2 100644 (file)
@@ -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) {
index b7bef12cca994bba66cdbf06051d606ead41cdff..45da430270970930de3599de898d3a2be134c4a1 100644 (file)
@@ -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) {
index 00210a18e9e38f940790048d4c478854630cfaa6..f78bcf9ec7b26f8c1fc4cafff5a04f86a6c2b15d 100644 (file)
@@ -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);