From: Victor Julien Date: Wed, 4 Apr 2018 11:49:35 +0000 (+0200) Subject: unified2: address strict aliasing issue X-Git-Tag: suricata-4.1.0-rc1~137 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F3334%2Fhead;p=thirdparty%2Fsuricata.git unified2: address strict aliasing issue --- diff --git a/src/alert-unified2-alert.c b/src/alert-unified2-alert.c index 01af656084..2abcd59528 100644 --- a/src/alert-unified2-alert.c +++ b/src/alert-unified2-alert.c @@ -844,16 +844,17 @@ static int Unified2IPv6TypeAlert(ThreadVars *t, const Packet *p, void *data) gphdr.sensor_id = htonl(sensor_id); gphdr.event_second = htonl(p->ts.tv_sec); gphdr.event_microsecond = htonl(p->ts.tv_usec); - gphdr.src_ip = *(struct in6_addr*)GET_IPV6_SRC_ADDR(p); - gphdr.dst_ip = *(struct in6_addr*)GET_IPV6_DST_ADDR(p); + gphdr.src_ip = GET_IPV6_SRC_IN6ADDR(p); + gphdr.dst_ip = GET_IPV6_SRC_IN6ADDR(p); /** If XFF is in overwrite mode... */ if (aun->xff_flags & XFF_OVERWRITE) { BUG_ON(aun->xff_flags & UNIFIED2_ALERT_XFF_IPV4); + struct in6_addr *a = (struct in6_addr*)aun->xff_ip; if (p->flowflags & FLOW_PKT_TOCLIENT) { - gphdr.dst_ip = *(struct in6_addr*)aun->xff_ip; + gphdr.dst_ip = *a; } else { - gphdr.src_ip = *(struct in6_addr*)aun->xff_ip; + gphdr.src_ip = *a; } } gphdr.protocol = p->proto;