forked from osmocom/wireshark
Fix for Bug Packet details have errors when decode MAP V2 PRN_ACK msg
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5076 Use: /* * Dissect Multiple Choice Message * This function is used to decode a message, when several encoding may be used. * For exemple, in the last MAP version, the Cancel Location is defined like this: * CancelLocationArg ::= [3] IMPLICIT SEQUENCE * But in the previous MAP version, it was a CHOICE between a SEQUENCE and an IMSI * As ASN1 encoders (or software) still uses the old encoding, this function allows * the decoding of both versions. * Moreover, some optimizations (or bad practice ?) in ASN1 encoder, removes the * SEQUENCE tag, when only one parameter is present in the SEQUENCE. * This explain why the function expects 3 parameters: * - a [3] SEQUENCE corresponding the recent ASN1 MAP encoding * - a SEQUENCE for old style * - and a single parameter, for old version or optimizations * * The analyze of the first ASN1 tag, indicate what kind of decoding should be used, * if the decoding function is provided (so not a NULL function) */ svn path=/trunk/; revision=34001
This commit is contained in:
parent
93cfe5571b
commit
687eb5a2a6
|
@ -1,5 +1,5 @@
|
|||
-- $Id$
|
||||
-- 3GPP TS 29.002 V9.1.0 V9.0.0 (2010-03)
|
||||
-- 3GPP TS 29.002 V9.1.0 (2010-03)
|
||||
-- 17.6.1 Mobile Service Operations
|
||||
|
||||
MAP-MobileServiceOperations {
|
||||
|
|
|
@ -1264,7 +1264,10 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
|
|||
offset=dissect_gsm_map_ms_CancelLocationRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
break;
|
||||
case 4: /*provideRoamingNumber*/
|
||||
offset=dissect_gsm_map_ch_ProvideRoamingNumberRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
offset=dissect_mc_message(tvb, offset, actx, tree,
|
||||
FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_msisdn,
|
||||
FALSE, dissect_gsm_map_ch_ProvideRoamingNumberRes, -1,
|
||||
TRUE , NULL, -1);/*undefined*/
|
||||
break;
|
||||
case 5: /*noteSubscriberDataModified*/
|
||||
offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
|
|
|
@ -17673,7 +17673,10 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
|
|||
offset=dissect_gsm_map_ms_CancelLocationRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
break;
|
||||
case 4: /*provideRoamingNumber*/
|
||||
offset=dissect_gsm_map_ch_ProvideRoamingNumberRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
offset=dissect_mc_message(tvb, offset, actx, tree,
|
||||
FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_msisdn,
|
||||
FALSE, dissect_gsm_map_ch_ProvideRoamingNumberRes, -1,
|
||||
TRUE , NULL, -1);/*undefined*/
|
||||
break;
|
||||
case 5: /*noteSubscriberDataModified*/
|
||||
offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(FALSE, tvb, offset, actx, tree, -1);
|
||||
|
@ -24371,7 +24374,7 @@ void proto_register_gsm_map(void) {
|
|||
"LCS_QoS", HFILL }},
|
||||
|
||||
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
|
||||
#line 2438 "packet-gsm_map-template.c"
|
||||
#line 2441 "packet-gsm_map-template.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
|
@ -24974,7 +24977,7 @@ void proto_register_gsm_map(void) {
|
|||
|
||||
|
||||
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
|
||||
#line 2466 "packet-gsm_map-template.c"
|
||||
#line 2469 "packet-gsm_map-template.c"
|
||||
};
|
||||
|
||||
/* Register protocol */
|
||||
|
@ -25050,7 +25053,7 @@ void proto_register_gsm_map(void) {
|
|||
|
||||
|
||||
/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
|
||||
#line 2484 "packet-gsm_map-template.c"
|
||||
#line 2487 "packet-gsm_map-template.c"
|
||||
oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
|
||||
oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
|
||||
/*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );
|
||||
|
|
Loading…
Reference in New Issue