Index: packet-gsm_a_bssmap.c
===================================================================
--- packet-gsm_a_bssmap.c	(revision 27770)
+++ packet-gsm_a_bssmap.c	(working copy)
@@ -4459,7 +4459,7 @@
 	/* LSA Identifier List	3.2.2.16	BSS-MSC	O (note 2)	3+3n */
 	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, "");
 	/* APDU	3.2.2.68	BSS-MSC	O (note 3)	3-n */
-	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
+	ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
 	/* Codec List (BSS Supported)	3.2.2.103	BSS-MSC	O (note 4)	3-n */
 	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
 
@@ -5214,7 +5214,7 @@
 	curr_offset = offset;
 	curr_len = len;
 
-	ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
+	ELEM_MAND_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
 
 	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_SEG, "");
 
@@ -5251,7 +5251,7 @@
 	/* GPS Assistance Data 3.2.2.70 C (note 2) 3-n */
 	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GPS_ASSIST_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GPS_ASSIST_DATA, "");
 	/* APDU 3.2.2.68 O 3-n */
-	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
+	ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
 	/* IMSI	3.2.2.6	O (note 4)	5-10 */
 	ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, "");
 	/* IMEI	3.2.2.86	O (note 4)	10 (use same decode as IMSI) */
Index: packet-gsm_a_common.c
===================================================================
--- packet-gsm_a_common.c	(revision 27770)
+++ packet-gsm_a_common.c	(working copy)
@@ -666,17 +666,7 @@
 	oct = tvb_get_guint8(tvb, curr_offset);
 
 	if (oct == iei){
-		if (oct == GSM_BSSMAP_APDU_IE){
-			/* This elements length is in two octets (a bit of a hack here)*/
-			lengt_length = 2;
-			parm_len = tvb_get_ntohs(tvb, curr_offset + 1);
-			if(parm_len > 255){
-				/* The rest of the logic can't handle length > 255 */
-				DISSECTOR_ASSERT_NOT_REACHED();
-			}
-		}else{
-			parm_len = tvb_get_guint8(tvb, curr_offset + 1);
-		}
+		parm_len = tvb_get_guint8(tvb, curr_offset + 1);
 
 		item =
 		proto_tree_add_text(tree,
