From f7f48c048056b4d0a11a4b3f95aef12aeb8b3abe Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 29 Apr 2019 19:14:43 +0200 Subject: 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 --- src/libmsc/gsm_04_11.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index b06fea5ec..ff5576f44 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -508,8 +508,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++; -- cgit v1.2.3