diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2008-11-12 12:38:16 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2008-11-12 12:38:16 +0000 |
commit | df82e1043a18c95eafe4aefc239946d047b36412 (patch) | |
tree | 98710a2bb6cbfd4d8644bbb90e88a66e60a051f5 /epan/dissectors/packet-btl2cap.c | |
parent | a31012717f60c3875882b11d756ca9a2d752d1d0 (diff) | |
download | wireshark-df82e1043a18c95eafe4aefc239946d047b36412.tar.gz |
Avoid crash when unable to lookup psm_data before calling dissect_options().
Removed an unused argument.
This fixes bug 3054.
svn path=/trunk/; revision=26759
Diffstat (limited to 'epan/dissectors/packet-btl2cap.c')
-rw-r--r-- | epan/dissectors/packet-btl2cap.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/epan/dissectors/packet-btl2cap.c b/epan/dissectors/packet-btl2cap.c index 3367e4d8cb..95d3596215 100644 --- a/epan/dissectors/packet-btl2cap.c +++ b/epan/dissectors/packet-btl2cap.c @@ -304,7 +304,7 @@ dissect_connrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t static int -dissect_options(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length, psm_data_t *psm_data _U_, config_data_t *config_data) +dissect_options(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length, config_data_t *config_data) { proto_item *ti_option=NULL; proto_tree *ti_option_subtree=NULL; @@ -420,11 +420,14 @@ dissect_configrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t offset+=2; if(tvb_length_remaining(tvb, offset)){ - if(pinfo->p2p_dir==P2P_DIR_RECV) - config_data = &(psm_data->out); + if (psm_data) + if(pinfo->p2p_dir==P2P_DIR_RECV) + config_data = &(psm_data->out); + else + config_data = &(psm_data->in); else - config_data = &(psm_data->in); - offset=dissect_options(tvb, offset, pinfo, tree, length - 4, psm_data, config_data); + config_data = NULL; + offset=dissect_options(tvb, offset, pinfo, tree, length - 4, config_data); } return offset; @@ -511,11 +514,14 @@ dissect_configresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_ offset+=2; if(tvb_length_remaining(tvb, offset)){ - if(pinfo->p2p_dir==P2P_DIR_RECV) - config_data = &(psm_data->in); + if (psm_data) + if(pinfo->p2p_dir==P2P_DIR_RECV) + config_data = &(psm_data->out); + else + config_data = &(psm_data->in); else - config_data = &(psm_data->out); - offset=dissect_options(tvb, offset, pinfo, tree, length - 6, psm_data, config_data); + config_data = NULL; + offset=dissect_options(tvb, offset, pinfo, tree, length - 6, config_data); } return offset; |