Tighten the heuristic.
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 24 Nov 2010 15:15:28 +0000 (15:15 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 24 Nov 2010 15:15:28 +0000 (15:15 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35020 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-reload-framing.c

index dee5a461ac52ab59b45db70d8933d074d3225e37..22ace014147c962a08b841382311ceb03ab53e69 100644 (file)
@@ -129,20 +129,33 @@ dissect_reload_framing_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
   if (effective_length < MIN_HDR_LENGTH)
     return 0;
 
-  /* Get the type */
+  /* Get the type 
+   * http://tools.ietf.org/html/draft-ietf-p2psip-base-12
+   * 5.6.2.  Framing Header
+   */
   type = tvb_get_guint8(tvb, 0);
 
-  if (type == DATA) {
-    /* in the data type, check the reload token to be sure this
-       is a reLoad packet */
-    message_length = (tvb_get_ntohs(tvb, 1 + 4)<<8)+ tvb_get_guint8(tvb, 1 + 4 + 2);
-    if (message_length < MIN_RELOADDATA_HDR_LENGTH) {
-      return 0;
-    }
-    relo_token = tvb_get_ntohl(tvb,1 + 4 + 3);
-    if (relo_token != RELOAD_TOKEN) {
-      return 0;
-    }
+  switch(type){
+         case DATA:
+               /* in the data type, check the reload token to be sure this
+                *  is a reLoad packet
+                */
+               message_length = (tvb_get_ntohs(tvb, 1 + 4)<<8)+ tvb_get_guint8(tvb, 1 + 4 + 2);
+               if (message_length < MIN_RELOADDATA_HDR_LENGTH) {
+                 return 0;
+               }
+               relo_token = tvb_get_ntohl(tvb,1 + 4 + 3);
+               if (relo_token != RELOAD_TOKEN) {
+                 return 0;
+               }
+               break;
+         case ACK:
+                 if (effective_length != 9){
+                         return 0;
+                 }
+                 break;
+         default:
+                 return 0;
   }