summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gsm/gsm48.c2
-rw-r--r--tests/gsm0408/gsm0408_test.c4
-rw-r--r--tests/gsm0408/gsm0408_test.ok8
3 files changed, 6 insertions, 8 deletions
diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c
index 4558dfb6..0f0889b4 100644
--- a/src/gsm/gsm48.c
+++ b/src/gsm/gsm48.c
@@ -611,7 +611,7 @@ uint8_t gsm48_generate_mid(uint8_t *buf, const char *id, uint8_t mi_type)
uint8_t length = strnlen(id, 255), i, off = 0, odd = (length & 1) == 1;
buf[0] = GSM48_IE_MOBILE_ID;
- buf[2] = osmo_char2bcd(id[0]) << 4 | mi_type | (odd << 3);
+ buf[2] = osmo_char2bcd(id[0]) << 4 | (mi_type & GSM_MI_TYPE_MASK) | (odd << 3);
/* if the length is even we will fill half of the last octet */
buf[1] = (length + (odd ? 1 : 2)) >> 1;
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index c786d389..9bb320d0 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -380,7 +380,7 @@ static const struct test_mid_encode_decode_test test_mid_encode_decode_tests[] =
{
.mi_type = GSM_MI_TYPE_IMSI | GSM_MI_ODD,
.mi_str = "423423",
- .expect_mi_tlv_hex = "1704493224f3", /* encodes "odd" for even number of digits! */
+ .expect_mi_tlv_hex = "1704413224f3",
},
{
.mi_type = GSM_MI_TYPE_IMSI,
@@ -464,7 +464,7 @@ static const struct test_mid_encode_decode_test test_mid_encode_decode_tests[] =
{
.mi_type = GSM_MI_ODD,
.mi_str = "1234",
- .expect_mi_tlv_hex = "17031832f4", /* encoding invalid MI type, and "odd" for an even number of digits */
+ .expect_mi_tlv_hex = "17031032f4", /* encoding invalid MI type */
.expect_str = "",
},
};
diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok
index 2db58de8..6e99f5b3 100644
--- a/tests/gsm0408/gsm0408_test.ok
+++ b/tests/gsm0408/gsm0408_test.ok
@@ -14,10 +14,8 @@ Testing Mobile Identity conversions
-> MI-TLV-hex='1704413224f3'
-> MI-str="423423" rc=7
- unknown 0x9 423423
- -> MI-TLV-hex='1704493224f3'
- -> MI-str="423423F" rc=8
- ERROR: expected MI-str="423423"
- ERROR: expected rc=7
+ -> MI-TLV-hex='1704413224f3'
+ -> MI-str="423423" rc=7
- IMSI 4234235
-> MI-TLV-hex='170449322453'
-> MI-str="4234235" rc=8
@@ -58,7 +56,7 @@ Testing Mobile Identity conversions
-> MI-TLV-hex='17031032f4'
-> MI-str="" rc=1
- unknown 0x8 1234
- -> MI-TLV-hex='17031832f4'
+ -> MI-TLV-hex='17031032f4'
-> MI-str="" rc=1
Decoding zero length Mobile Identities