From d238f2c65f450d93c98a13770180f3c647a7c211 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Wed, 30 Mar 2005 19:08:39 +0000 Subject: Update and small bugfix svn path=/trunk/; revision=13979 --- asn1/gsmmap/GSMMAP.asn | 22 ++++++++++++++++++++++ asn1/gsmmap/packet-gsm_map-template.c | 14 ++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'asn1/gsmmap') diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn index 7579fd2ba2..a25bd20050 100644 --- a/asn1/gsmmap/GSMMAP.asn +++ b/asn1/gsmmap/GSMMAP.asn @@ -414,7 +414,29 @@ authenticationSetList CHOICE { CheckIMEIArg ::= Imei Imei ::= OCTET STRING ( SIZE( 8 ) ) +-- V2 +-- checkIMEI OPERATION ::= { +-- ARGUMENT SEQUENCE { +CheckIMEIv2Arg ::= SEQUENCE { + imei Imei, + requestedEquipmentInfo BIT STRING { + equipmentStatus (0 ), + bmuef (1 )} ( SIZE (2 .. 8 ) ), + extensionContainer ExtensionContainer OPTIONAL, + ... } + -- RESULT + +-- RESULT SEQUENCE { +ChekIMEIv3Res ::= SEQUENCE { + equipmentStatus EquipmentStatus OPTIONAL, + bmuef SEQUENCE { + uesbi-IuA [0] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL, + uesbi-IuB [1] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL, + ... } OPTIONAL, + extensionContainer [0] IMPLICIT ExtensionContainer OPTIONAL, + ... } + EquipmentStatus ::= ENUMERATED { whiteListed ( 0 ), blackListed ( 1 ), diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c index a1176bd14c..83b4f14bc0 100644 --- a/asn1/gsmmap/packet-gsm_map-template.c +++ b/asn1/gsmmap/packet-gsm_map-template.c @@ -122,6 +122,8 @@ unpack_digits(tvbuff_t *tvb, int offset){ char *digit_str; length = tvb_length(tvb); + if (length < offset) + return NULL; length = length - offset; digit_str = g_malloc(length+1); @@ -473,7 +475,11 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1); break; case 43: /*checkIMEI*/ - offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1); + if (application_context_version < 2 ){ + offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1); + }else{ + offset=dissect_gsm_map_CheckIMEIv2Arg(FALSE, tvb, offset, pinfo, tree, -1); + } break; case 44: /*mt-forwardSM*/ offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1); @@ -672,7 +678,7 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1); break; case 43: /*checkIMEI*/ - offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, -1); + offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus); break; case 45: /*sendRoutingInfoForSM*/ offset=dissect_gsm_map_RoutingInfoForSMRes(FALSE, tvb, offset, pinfo, tree, -1); @@ -1267,11 +1273,11 @@ void proto_register_gsm_map(void) { FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04, "P bit", HFILL }}, { &hf_gsm_map_Ss_Status_r_bit, - { "R bit", "ss_status_r_bit", + { "R bit", "gsm_map.ss_status_r_bit", FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02, "R bit", HFILL }}, { &hf_gsm_map_Ss_Status_a_bit, - { "A bit", "ss_status_a_bit", + { "A bit", "gsm_map.ss_status_a_bit", FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01, "A bit", HFILL }}, -- cgit v1.2.3