]> 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:29:44 +0000 (15:29 +0100)
Resolve possible 8-byte unaligned access when assigning the magic
value from the received buffer.

(cherry picked from commit a55bdb28f9004a2db49b3389efe09d99d93c256d)

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 a6777cb1fcb0b6c4c90c1b35c80b6dbc01c3a2f6..d24599920c422af53a27350afafd6b48737dfeef 100644 (file)
@@ -258,7 +258,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);
@@ -649,7 +649,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 7864e8745508d29ef503eb3bb22dc8659a8146d0..e0a1aba8f16bce3828ba09452d9bd2a57c7f7410 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 8f1fb1bbbffeb58be37789240bc29b5ab293cda8..9325f04daed0aec5ee16c79e3b6d2e6409648420 100644 (file)
@@ -325,7 +325,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);
 
@@ -475,7 +475,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 7eadb4a781e32403c9f70faeb1cf3438724b316c..d6e2ff2e362ed0cb6df9a13b6a7afdc37e22f70c 100644 (file)
@@ -335,7 +335,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);
 
@@ -487,7 +487,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 06ea7f1f2d0d1f8eae2c5c83b191055b408a6ffb..6941f11263c160f0a37b965520e04a0163fadcb8 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);