aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-04-29 19:14:43 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2019-05-08 01:51:06 +0200
commit56f90132b8d7d6a40cc1665b34ff35c62becb2f0 (patch)
tree478e9658cdecbecf5fffab6138099718d4b70cc2 /src
parent5b1e0309b513ebe05a4b5b6dfa0c8ad620d34a99 (diff)
gsm_04_11: use gsm48_decode_bcd_number2(), evaluate rc
Avoid deprecation warning: use gsm48_decode_bcd_number2() instead of gsm48_decode_bcd_number(). Validate the return value and add error handling. Change-Id: Ibef71c46d72d2d43123e68f73e5ed554a69243d8
Diffstat (limited to 'src')
-rw-r--r--src/libmsc/gsm_04_11.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 71069dc56..85b861cfb 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -526,8 +526,12 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
gsms->dst.ton = (address_lv[1] >> 4) & 7;
gsms->dst.npi = address_lv[1] & 0xF;
/* convert to real number */
- gsm48_decode_bcd_number(gsms->dst.addr,
- sizeof(gsms->dst.addr), address_lv, 1);
+ if (gsm48_decode_bcd_number2(gsms->dst.addr,
+ sizeof(gsms->dst.addr), address_lv, da_len_bytes, 1)) {
+ LOG_TRANS(trans, LOGL_ERROR, "Failed to decode destination Address\n");
+ rc = GSM411_RP_CAUSE_SEMANT_INC_MSG;
+ goto out;
+ }
smsp += da_len_bytes;
gsms->protocol_id = *smsp++;