osmo_gsup_decode(): properly check IMSI, avoid deprecation

In osmo_gsup_decode(), call gsm48_decode_bcd_number2() to avoid deprecation
warning, and also actually check the return value to detect invalid IMSI IEs.

Change-Id: Iaded84d91baad5386c8f353c283b6b9e40a43b05
diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c
index a3d9eef..2e6690e 100644
--- a/src/gsm/gsup.c
+++ b/src/gsm/gsup.c
@@ -332,9 +332,11 @@
 	 * before the value part already contains this length so we can use it
 	 * here.
 	 */
-	OSMO_ASSERT(value[-1] == value_len);
-	gsm48_decode_bcd_number(gsup_msg->imsi, sizeof(gsup_msg->imsi),
-				value - 1, 0);
+	if (gsm48_decode_bcd_number2(gsup_msg->imsi, sizeof(gsup_msg->imsi),
+				     value - 1, value_len + 1, 0)) {
+		LOGP(DLGSUP, LOGL_ERROR, "Cannot decode IMSI\n");
+		return -GMM_CAUSE_INV_MAND_INFO;
+	}
 
 	/* specific parts */
 	while (data_len > 0) {