mount: don't THROW() an exception from a dissector
authorMartin Kaiser <wireshark@kaiser.cx>
Mon, 13 Jun 2016 22:50:33 +0000 (15:50 -0700)
committerAnders Broman <a.broman58@gmail.com>
Tue, 14 Jun 2016 03:39:25 +0000 (03:39 +0000)
if the length is too large, we can simply skip nfs_name_snoop_add_name()
and the code to prepare its input

Change-Id: I30c9a89edf7b48c45b52e7dad099ac4151f7f4a7
Reviewed-on: https://code.wireshark.org/review/15883
Reviewed-by: Anders Broman <a.broman58@gmail.com>
epan/dissectors/packet-mount.c

index 914126b0f0c307ce09d49841164d1cbdb2526d70..8b82c0e8b91edf861e67ce1a9766cc54e5d000c7 100644 (file)
@@ -169,19 +169,18 @@ dissect_mount_dirpath_call(tvbuff_t *tvb, packet_info *pinfo,
 
                        host=address_to_str(wmem_packet_scope(), &pinfo->dst);
                        len=tvb_get_ntohl(tvb, offset);
-                       if (len >= ITEM_LABEL_LENGTH)
-                               THROW(ReportedBoundsError);
-
-                       name=(unsigned char *)g_malloc(strlen(host)+1+len+1+200);
-                       ptr=name;
-                       memcpy(ptr, host, strlen(host));
-                       ptr+=strlen(host);
-                       *ptr++=':';
-                       tvb_memcpy(tvb, ptr, offset+4, len);
-                       ptr+=len;
-                       *ptr=0;
-
-                       nfs_name_snoop_add_name(civ->xid, tvb, -1, (gint)strlen(name), 0, 0, name);
+                       if (len < ITEM_LABEL_LENGTH) {
+                               name=(unsigned char *)g_malloc(strlen(host)+1+len+1+200);
+                               ptr=name;
+                               memcpy(ptr, host, strlen(host));
+                               ptr+=strlen(host);
+                               *ptr++=':';
+                               tvb_memcpy(tvb, ptr, offset+4, len);
+                               ptr+=len;
+                               *ptr=0;
+
+                               nfs_name_snoop_add_name(civ->xid, tvb, -1, (gint)strlen(name), 0, 0, name);
+                       }
                }
        }