diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2006-04-18 21:08:14 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2006-04-18 21:08:14 +0000 |
commit | c1bba7940eccaa1c08ef573b35ec5ba68be1d5bc (patch) | |
tree | d555b52bcd9b318b8a74f345e75957b0b7882af3 /plugins | |
parent | eb9ade23b8d1dc8e03066c572f61cf27cc9612a9 (diff) |
Fix Bug http://bugs.ethereal.com/bugzilla/show_bug.cgi?id=677 megaco.dll can not handle lowcase descriptor
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@17900 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/megaco/packet-megaco.c | 138 |
1 files changed, 71 insertions, 67 deletions
diff --git a/plugins/megaco/packet-megaco.c b/plugins/megaco/packet-megaco.c index cb5a615fe0..5bbdf518c6 100644 --- a/plugins/megaco/packet-megaco.c +++ b/plugins/megaco/packet-megaco.c @@ -403,6 +403,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) */ tempchar = tvb_get_guint8(tvb, tvb_previous_offset ); + if ( (tempchar >= 'a')&& (tempchar <= 'z')) + tempchar = tempchar - 0x20; switch ( tempchar ){ /* errorDescriptor */ @@ -812,7 +814,8 @@ nextcontext: tokenlen = tvb_offset - tvb_command_start_offset; tempchar = tvb_get_guint8(tvb, tvb_command_start_offset); - + if ( (tempchar >= 'a')&& (tempchar <= 'z')) + tempchar = tempchar - 0x20; if ( tempchar != 'E' ){ @@ -1128,6 +1131,8 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, tempchar = tvb_get_guint8(tvb, tvb_previous_offset ); + if ( (tempchar >= 'a')&& (tempchar <= 'z')) + tempchar = tempchar - 0x20; switch ( tempchar ){ @@ -1163,87 +1168,86 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, } break; - case 'S': - tempchar = tvb_get_guint8(tvb, tvb_previous_offset+1 ); - switch ( tempchar ){ - - case 'i': - dissect_megaco_signaldescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'S': + tempchar = tvb_get_guint8(tvb, tvb_previous_offset+1 ); + switch ( tempchar ){ + case 'i': + dissect_megaco_signaldescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'G': - dissect_megaco_signaldescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'G': + dissect_megaco_signaldescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'e': - dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'e': + dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'V': - dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'V': + dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'C': - dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'C': + dissect_megaco_servicechangedescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 't': - dissect_megaco_statisticsdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 't': + dissect_megaco_statisticsdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'A': - dissect_megaco_statisticsdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; - default: - tokenlen = (tvb_RBRKT+1) - tvb_previous_offset; - proto_tree_add_string(megaco_tree_command_line, hf_megaco_error_Frame, tvb, - tvb_previous_offset, tokenlen, - "No Descriptor detectable !"); - break; - } + case 'A': + dissect_megaco_statisticsdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); break; + default: + tokenlen = (tvb_RBRKT+1) - tvb_previous_offset; + proto_tree_add_string(megaco_tree_command_line, hf_megaco_error_Frame, tvb, + tvb_previous_offset, tokenlen, + "No Descriptor detectable !"); + break; + } + break; - case 'E': - tempchar = tvb_get_guint8(tvb, tvb_previous_offset+1 ); - if ( tempchar == 'r' || tempchar == 'R'){ + case 'E': + tempchar = tvb_get_guint8(tvb, tvb_previous_offset+1 ); + if ( tempchar == 'r' || tempchar == 'R'){ - if ( tvb_get_guint8(tvb, tvb_skip_wsp(tvb, tvb_RBRKT +1)) == ';'){ - tvb_RBRKT = tvb_find_guint8(tvb, tvb_RBRKT+1, tvb_len, '}'); - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_RBRKT -1)-1; - } + if ( tvb_get_guint8(tvb, tvb_skip_wsp(tvb, tvb_RBRKT +1)) == ';'){ + tvb_RBRKT = tvb_find_guint8(tvb, tvb_RBRKT+1, tvb_len, '}'); + tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_RBRKT -1)-1; + } + dissect_megaco_errordescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + } + else{ + dissect_megaco_eventsdescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + } + break; - dissect_megaco_errordescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - } - else{ - dissect_megaco_eventsdescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - } - break; + case 'A': + dissect_megaco_auditdescriptor(tvb, megaco_tree_command_line, pinfo, tvb_RBRKT, tvb_previous_offset); + break; - case 'A': - dissect_megaco_auditdescriptor(tvb, megaco_tree_command_line, pinfo, tvb_RBRKT, tvb_previous_offset); - break; + case 'D': + dissect_megaco_digitmapdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'D': - dissect_megaco_digitmapdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'O': + dissect_megaco_observedeventsdescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'O': - dissect_megaco_observedeventsdescriptor(tvb, pinfo, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'T': + dissect_megaco_topologydescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - case 'T': - dissect_megaco_topologydescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; - case 'P': - dissect_megaco_Packagesdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); - break; + case 'P': + dissect_megaco_Packagesdescriptor(tvb, megaco_tree_command_line, tvb_RBRKT, tvb_previous_offset); + break; - default: - tokenlen = (tvb_RBRKT+1) - tvb_previous_offset; - proto_tree_add_string(megaco_tree_command_line, hf_megaco_error_Frame, tvb, - tvb_previous_offset, tokenlen, - "No Descriptor detectable !"); - break; + default: + tokenlen = (tvb_RBRKT+1) - tvb_previous_offset; + proto_tree_add_string(megaco_tree_command_line, hf_megaco_error_Frame, tvb, + tvb_previous_offset, tokenlen, + "No Descriptor detectable !"); + break; } |