]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
fix encoder check for ip6 extensions
authorRuss Combs <rucombs@cisco.com>
Wed, 4 Feb 2015 21:59:59 +0000 (16:59 -0500)
committerRuss Combs <rucombs@cisco.com>
Wed, 4 Feb 2015 21:59:59 +0000 (16:59 -0500)
ChangeLog
src/protocols/layer.cc

index 657dd30fe93d798770e502273a0aaccab7668d13..9ace11aea202f9c681e3de9a2376a3b5d9534454 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 Pending - build 136
 
+-- fix encoder check for ip6 extensions
 -- sync normalizatons with 297
 
 15/01/29 - build 135
index 1550cf440c0ceeb6bf1419fc612eb9adaa088c6e..977e664255495b7d346b42ef7735534f2af0f0bd 100644 (file)
@@ -19,6 +19,7 @@
 
 
 #include <netinet/in.h>
+#include <limits>
 #include "protocols/layer.h"
 #include "protocols/protocol_ids.h"
 #include "protocols/packet.h"
@@ -271,7 +272,9 @@ bool set_inner_ip_api(const Packet* const p,
     if (curr_layer < 0 || curr_layer >= p->num_layers)
         return false;
 
-    if (is_ip6_extension(p->layers[curr_layer].prot_id))
+    const uint16_t proto = p->layers[curr_layer].prot_id;
+    const uint8_t ip_proto_max = std::numeric_limits<uint8_t>::max();
+    if ( (proto <= ip_proto_max) && is_ip6_extension((uin8_t)proto) )
     {
         const ip::IP6Extension* const ip6_ext =
             reinterpret_cast<const ip::IP6Extension*>(p->layers[curr_layer].start);