]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
tcp sack: fix alignment issues
authorVictor Julien <victor@inliniac.net>
Fri, 6 May 2016 13:04:07 +0000 (15:04 +0200)
committerVictor Julien <victor@inliniac.net>
Mon, 9 May 2016 18:31:35 +0000 (20:31 +0200)
src/stream-tcp-sack.c

index 7f95d04c4cdae850fd01093d8bc7910bb8cdc3e9..9d0071aac69d678cdc7cb189a7383b8863933462 100644 (file)
@@ -254,8 +254,13 @@ int StreamTcpSackUpdatePacket(TcpStream *stream, Packet *p)
 {
     int records = TCP_GET_SACK_CNT(p);
     int record = 0;
+    const uint8_t *data = TCP_GET_SACK_PTR(p);
 
-    TCPOptSackRecord *sack_rec = (TCPOptSackRecord *)(TCP_GET_SACK_PTR(p));
+    if (records == 0 || data == NULL)
+        return 0;
+
+    TCPOptSackRecord rec[records], *sack_rec = rec;
+    memcpy(&rec, data, sizeof(TCPOptSackRecord) * records);
 
     for (record = 0; record < records; record++) {
         SCLogDebug("%p last_ack %u, left edge %u, right edge %u", sack_rec,