]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Use unaligned_memcmp() to compare with IPv{4,6} addresses in a packet.
authorGuy Harris <[email protected]>
Fri, 17 Jan 2014 01:25:05 +0000 (17:25 -0800)
committerGuy Harris <[email protected]>
Fri, 17 Jan 2014 01:25:05 +0000 (17:25 -0800)
They are, after all, not guaranteed to be aligned.

print-esp.c

index 8b90641adff486fc3bcd3194889ce0c24ff9e446..dd23adc57629416d642f27819e56b0abfa672bc1 100644 (file)
@@ -651,7 +651,7 @@ esp_print(netdissect_options *ndo,
                        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa->daddr;
                        if (sa->spi == EXTRACT_32BITS(&esp->esp_spi) &&
                            sin6->sin6_family == AF_INET6 &&
-                           memcmp(&sin6->sin6_addr, &ip6->ip6_dst,
+                           unaligned_memcmp(&sin6->sin6_addr, &ip6->ip6_dst,
                                   sizeof(struct in6_addr)) == 0) {
                                break;
                        }
@@ -669,7 +669,8 @@ esp_print(netdissect_options *ndo,
                        struct sockaddr_in *sin = (struct sockaddr_in *)&sa->daddr;
                        if (sa->spi == EXTRACT_32BITS(&esp->esp_spi) &&
                            sin->sin_family == AF_INET &&
-                           sin->sin_addr.s_addr == ip->ip_dst.s_addr) {
+                           unaligned_memcmp(&sin->sin_addr, &ip->ip_dst,
+                                  sizeof(struct in_addr)) == 0) {
                                break;
                        }
                }