aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2017-08-18 12:26:23 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2017-08-27 17:40:56 +0200
commit05a1213b29d08dd36f3782506ed8020d081bd108 (patch)
tree6ebf926909a84997bd04b40df66b9b22c077246f
parent12ebe7e042d28eb43a5f3af38052a13f0822fcea (diff)
libmsc: Fix wrong handling of user_message_reference parameter
libsmpp34 already converts received TLV integer values to native endianess in libsmpp34_(un)pack. Converting them again at receive time swaps the 2 bytes of user_message_reference, then using a wrong value. As GSM03.40 spec uses only 1 byte for the id, then only the high byte of the initial value is used and eventually sent back to the ESME. Again, at that time, htons() is not needed because libsmpp34 already handles that part. See OS-#2429 for more details. Change-Id: If748548a4a223e529a1110c89e483b599b406e8b
-rw-r--r--src/libmsc/smpp_openbsc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index ec148982..431cb4df 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -121,7 +121,7 @@ static int submit_to_sms(struct gsm_sms **psms, struct gsm_network *net,
}
break;
case TLVID_user_message_reference:
- msg_ref = ntohs(t->value.val16);
+ msg_ref = t->value.val16;
break;
default:
break;
@@ -437,7 +437,7 @@ void append_tlv_u16(tlv_t **req_tlv, uint16_t tag, uint16_t val)
memset(&tlv, 0, sizeof(tlv));
tlv.tag = tag;
tlv.length = 2;
- tlv.value.val16 = htons(val);
+ tlv.value.val16 = val;
build_tlv(req_tlv, &tlv);
}