aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/gsm_map
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2010-08-29 17:34:44 +0000
committerAnders Broman <anders.broman@ericsson.com>2010-08-29 17:34:44 +0000
commit687eb5a2a69f0260247fab4cbf41ed28be5e03f1 (patch)
treef320be89ead22e0d5645e11c7d897dcb5c97cdd0 /asn1/gsm_map
parent93cfe5571b36e986ae90a040b6723dd3e4d236bb (diff)
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
Diffstat (limited to 'asn1/gsm_map')
-rw-r--r--asn1/gsm_map/MAP-MobileServiceOperations.asn2
-rw-r--r--asn1/gsm_map/packet-gsm_map-template.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/asn1/gsm_map/MAP-MobileServiceOperations.asn b/asn1/gsm_map/MAP-MobileServiceOperations.asn
index d9a18313f9..894c62fcbd 100644
--- a/asn1/gsm_map/MAP-MobileServiceOperations.asn
+++ b/asn1/gsm_map/MAP-MobileServiceOperations.asn
@@ -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 {
diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c
index 0b9b6c1430..70102146ca 100644
--- a/asn1/gsm_map/packet-gsm_map-template.c
+++ b/asn1/gsm_map/packet-gsm_map-template.c
@@ -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);