aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorLuke Mewburn <luke@mewburn.net>2016-01-28 17:19:13 +1100
committerAnders Broman <a.broman58@gmail.com>2016-01-29 14:58:30 +0000
commitd6caaaab6c387c8a842aa81a6eb4fce209e64562 (patch)
treed57f5460827068550b57a45fbb0cd13d9fa457c8 /asn1
parent5084a423e88508c1d8a1b106262410b9bb185075 (diff)
gsm_map: decode SRISM v1 and v2 result
Fix decoding of sendRoutingInfoForSM (SRISM) application contexts version 1 and version 2. Use a (slightly modified) version of the ASN.1 from ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6 which has LocationInfoWithLMSI that is incompatible with application context version 3 in 3GPP TS 29.002 version 3.20.0 Release 1999, clause 17.7.6. Bug: 9622 Ping-Bug: 9704 Change-Id: Icc9a0a1743a6eb4c907f4cab3fb2137db139ad74 Reviewed-on: https://code.wireshark.org/review/13572 Petri-Dish: Anders Broman <a.broman58@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gsm_map/GSMMAP.asn21
-rw-r--r--asn1/gsm_map/packet-gsm_map-template.c6
2 files changed, 26 insertions, 1 deletions
diff --git a/asn1/gsm_map/GSMMAP.asn b/asn1/gsm_map/GSMMAP.asn
index a47c237467..c00ebbe8d6 100644
--- a/asn1/gsm_map/GSMMAP.asn
+++ b/asn1/gsm_map/GSMMAP.asn
@@ -2,6 +2,7 @@
--SIEMENS ASN.1 Compiler R5.70 (Production_5.70)
-- Date: 2003-09-04 Time: 14:14:00
-- Updated to version 3GPP TS 29.002 V7.5.0 (2006-09) Release 7
+-- Partially from ETS 300 599: December 2000 (GSM 09.02 version 4.19.1)
DummyMAP{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-Protocol (4) version5 (5) }
@@ -682,6 +683,26 @@ RoutingInfoForSM-ArgV1 ::= SEQUENCE {
--correlationID [15] CorrelationID OPTIONAL
}
+-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6
+RoutingInfoForSM-ResV2::= SEQUENCE {
+ imsi IMSI,
+ locationInfoWithLMSI [0] LocationInfoWithLMSIv2,
+ mwd-Set [2] BOOLEAN OPTIONAL,
+ -- mwd-Set must be absent in version greater 1
+ ...}
+
+-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6
+LocationInfoWithLMSIv2 ::= SEQUENCE {
+ locationInfo LocationInfo,
+ lmsi LMSI OPTIONAL,
+ ...}
+
+-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6
+LocationInfo ::= CHOICE {
+ roamingNumber [0] ISDN-AddressString,
+ -- roamingNumber must not be used in version greater 1
+ msc-Number [1] ISDN-AddressString}
+
Ki ::= OCTET STRING (SIZE (16))
SendParametersArg ::= SEQUENCE {
diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c
index 9c75f01d8e..ccd19f7b03 100644
--- a/asn1/gsm_map/packet-gsm_map-template.c
+++ b/asn1/gsm_map/packet-gsm_map-template.c
@@ -1485,7 +1485,11 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
offset=dissect_gsm_map_sm_MT_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1);
break;
case 45: /*sendRoutingInfoForSM*/
- offset=dissect_gsm_map_sm_RoutingInfoForSM_Res(FALSE, tvb, offset, actx, tree, -1);
+ if (application_context_version < 3) {
+ offset=dissect_gsm_old_RoutingInfoForSM_ResV2(FALSE, tvb, offset, actx, tree, -1);
+ } else {
+ offset=dissect_gsm_map_sm_RoutingInfoForSM_Res(FALSE, tvb, offset, actx, tree, -1);
+ }
break;
case 46: /*mo-forwardSM*/
offset=dissect_gsm_map_sm_MO_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1);