aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mount.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2016-06-13 15:50:33 -0700
committerAnders Broman <a.broman58@gmail.com>2016-06-14 03:39:25 +0000
commit048ba7a3a39e691d4c3e35501904daf52e5c3110 (patch)
tree8994b4abf34d307aff512c66393bb1622acc261c /epan/dissectors/packet-mount.c
parent238a9846bc1a50251816830deb153187d9509614 (diff)
mount: don't THROW() an exception from a dissector
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>
Diffstat (limited to 'epan/dissectors/packet-mount.c')
-rw-r--r--epan/dissectors/packet-mount.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/epan/dissectors/packet-mount.c b/epan/dissectors/packet-mount.c
index 914126b0f0..8b82c0e8b9 100644
--- a/epan/dissectors/packet-mount.c
+++ b/epan/dissectors/packet-mount.c
@@ -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);
+ }
}
}