diff options
author | lns <matzeton@googlemail.com> | 2020-06-22 16:26:04 +0200 |
---|---|---|
committer | lns <matzeton@googlemail.com> | 2020-06-22 16:26:04 +0200 |
commit | c3bd138805b9ef9f8cb9a5e02a371449f9871600 (patch) | |
tree | f0bd4a3d88ab45a9c917df9c9a847925c3011d8e | |
parent | af15e7f597ad03d541a43199b29e422971e48ed8 (diff) |
fixed unaligned pointer access to packed member
pdesc.c:233:2: warning: converting a packed ‘icmp_echo_packet_t’ pointer (alignment 1)
to a ‘uint16_t’ {aka ‘short unsigned int’} pointer (alignment 2) may result
in an unaligned pointer value [-Waddress-of-packed-member]
233 | pkt->checksum = htons(calc_icmp_checksum((uint16_t*)pkt, pkt_len));
| ^~~
-rw-r--r-- | src/pdesc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pdesc.c b/src/pdesc.c index 78bf1cd..bcae1c4 100644 --- a/src/pdesc.c +++ b/src/pdesc.c @@ -197,6 +197,7 @@ int queue_packet(int sock_fd, proxy_desc_t *cur, char *buf, size_t bufsiz, icmp_echo_packet_t *pkt = 0; ping_tunnel_pkt_t *pt_pkt = 0; uint16_t ack_val; + uint8_t * icmp_chksm_ptr; assert(sock_fd >= 0); assert(cur); @@ -230,7 +231,8 @@ int queue_packet(int sock_fd, proxy_desc_t *cur, char *buf, size_t bufsiz, /* Copy user data */ if (buf && bufsiz > 0) memcpy(pt_pkt->data, buf, bufsiz); - pkt->checksum = htons(calc_icmp_checksum((uint16_t*)pkt, pkt_len)); + icmp_chksm_ptr = (uint8_t*)pkt; + pkt->checksum = htons(calc_icmp_checksum((uint16_t*)icmp_chksm_ptr, pkt_len)); /* Send it! */ pt_log(kLog_sendrecv, "Send: %4d [%4d] bytes " |