diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-01-13 07:03:14 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-01-13 07:03:14 +0000 |
commit | 917084b2c2167c56f62f02140c2c28b3abd27cf6 (patch) | |
tree | b86aef9e8f35cbac2edef4386d7bc0d7ba889b47 /epan/dissectors/packet-dlsw.c | |
parent | 206fb8f80b65f6c086df23c312a9fe2b19527884 (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.c | 4 |
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)) ; |