aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ndps.c
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2005-05-28 12:49:19 +0000
committerUlf Lamping <ulf.lamping@web.de>2005-05-28 12:49:19 +0000
commitf8b3fe7668623b905fd38acf64c79e1301af75ca (patch)
treecb75c94e6514dbbf7ca732b7c06eda13477f8d00 /epan/dissectors/packet-ndps.c
parentfb65ef09ebef13d76986e1e0b635ec7e5e4f9f3f (diff)
add some tvb_ensure_bytes_exist() calls, fixes #197, #202 and #208
svn path=/trunk/; revision=14465
Diffstat (limited to 'epan/dissectors/packet-ndps.c')
-rw-r--r--epan/dissectors/packet-ndps.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-ndps.c b/epan/dissectors/packet-ndps.c
index 9f001a4977..46d7cb45b5 100644
--- a/epan/dissectors/packet-ndps.c
+++ b/epan/dissectors/packet-ndps.c
@@ -1954,15 +1954,18 @@ print_address(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
proto_tree_add_item(ndps_tree, hf_ndps_net, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_node, tvb, foffset+4, 6, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_socket, tvb, foffset+10, 2, FALSE);
+ tvb_ensure_bytes_exist(tvb, foffset, address_len);
foffset += address_len;
break;
case 0x00000001:
proto_tree_add_item(ndps_tree, hf_ndps_port, tvb, foffset, 2, FALSE);
address = tvb_get_letohl(tvb, foffset+2);
proto_tree_add_ipv4(ndps_tree, hf_ndps_ip, tvb, foffset+2, 4, address);
+ tvb_ensure_bytes_exist(tvb, foffset, address_len);
foffset += address_len;
break;
default:
+ tvb_ensure_bytes_exist(tvb, foffset, tvb_get_ntohl(tvb, foffset -4));
foffset += tvb_get_ntohl(tvb, foffset -4);
break;
}
@@ -5091,6 +5094,7 @@ dissect_ndps_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ndps_tree, g
{
proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
}
+ tvb_ensure_bytes_exist(tvb, foffset, length);
foffset += length;
proto_item_set_end(aitem, tvb, foffset);
}