aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dlsw.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2005-01-13 07:03:14 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2005-01-13 07:03:14 +0000
commit917084b2c2167c56f62f02140c2c28b3abd27cf6 (patch)
treeb86aef9e8f35cbac2edef4386d7bc0d7ba889b47 /epan/dissectors/packet-dlsw.c
parent206fb8f80b65f6c086df23c312a9fe2b19527884 (diff)
Don't crash on a negative length
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@13012 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-dlsw.c')
-rw-r--r--epan/dissectors/packet-dlsw.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c
index 7c7de82851..8aa30e6be8 100644
--- a/epan/dissectors/packet-dlsw.c
+++ b/epan/dissectors/packet-dlsw.c
@@ -266,6 +266,10 @@ dissect_dlsw(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_text (dlsw_header_tree,tvb, 39,3,"Reserved") ;
dlchlen=tvb_get_ntohs(tvb,42);
proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"DLC Header Length = %d",dlchlen) ;
+ if ( dlchlen > mlen ){
+ proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"dlchlen > mlen, corrupt packet or not a dlsw packet");
+ return;
+ }
proto_tree_add_text (dlsw_header_tree,tvb, 44,4,"Origin DLC Port ID = %u",tvb_get_ntohl(tvb,44)) ;
proto_tree_add_text (dlsw_header_tree,tvb, 48,4,"Origin DLC = %u",tvb_get_ntohl(tvb,48)) ;
proto_tree_add_text (dlsw_header_tree,tvb, 52,4,"Origin Transport ID = %u",tvb_get_ntohl(tvb,52)) ;