subscr_name(): Handle case for subscr == NULL
subscr_name() was called from several places: * either without a check for subscr being NULL, which for example was causing a segfault if we hand-over a channel before identifying the subscriber * or with an explicit NULL check and the ternary operator (?). We now simplify the code by checking for the NULL Subscriber in subscr_name() itself. Change-Id: Ide09f4a515222eb2ec6c25e7a6a8c5f6cc2ffd4b Reviewed-on: https://gerrit.osmocom.org/92 Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <holger@freyther.de>
This commit is contained in:
parent
8495e03588
commit
7184bd088e
|
@ -1051,7 +1051,7 @@ static void print_meas_rep(struct gsm_lchan *lchan, struct gsm_meas_rep *mr)
|
||||||
int i;
|
int i;
|
||||||
char *name = "";
|
char *name = "";
|
||||||
|
|
||||||
if (lchan && lchan->conn && lchan->conn->subscr)
|
if (lchan && lchan->conn)
|
||||||
name = subscr_name(lchan->conn->subscr);
|
name = subscr_name(lchan->conn->subscr);
|
||||||
|
|
||||||
DEBUGP(DMEAS, "[%s] MEASUREMENT RESULT NR=%d ", name, mr->nr);
|
DEBUGP(DMEAS, "[%s] MEASUREMENT RESULT NR=%d ", name, mr->nr);
|
||||||
|
|
|
@ -43,6 +43,9 @@ struct llist_head *subscr_bsc_active_subscribers(void)
|
||||||
|
|
||||||
char *subscr_name(struct gsm_subscriber *subscr)
|
char *subscr_name(struct gsm_subscriber *subscr)
|
||||||
{
|
{
|
||||||
|
if (!subscr)
|
||||||
|
return "unknown";
|
||||||
|
|
||||||
if (strlen(subscr->name))
|
if (strlen(subscr->name))
|
||||||
return subscr->name;
|
return subscr->name;
|
||||||
|
|
||||||
|
|
|
@ -447,8 +447,7 @@ int gsm0408_loc_upd_rej(struct gsm_subscriber_connection *conn, uint8_t cause)
|
||||||
msg->lchan = conn->lchan;
|
msg->lchan = conn->lchan;
|
||||||
|
|
||||||
LOGP(DMM, LOGL_INFO, "Subscriber %s: LOCATION UPDATING REJECT "
|
LOGP(DMM, LOGL_INFO, "Subscriber %s: LOCATION UPDATING REJECT "
|
||||||
"LAC=%u BTS=%u\n", conn->subscr ?
|
"LAC=%u BTS=%u\n", subscr_name(conn->subscr),
|
||||||
subscr_name(conn->subscr) : "unknown",
|
|
||||||
bts->location_area_code, bts->nr);
|
bts->location_area_code, bts->nr);
|
||||||
|
|
||||||
return gsm48_conn_sendmsg(msg, conn, NULL);
|
return gsm48_conn_sendmsg(msg, conn, NULL);
|
||||||
|
@ -1153,9 +1152,7 @@ static int gsm0408_rcv_mm(struct gsm_subscriber_connection *conn, struct msgb *m
|
||||||
break;
|
break;
|
||||||
case GSM48_MT_MM_TMSI_REALL_COMPL:
|
case GSM48_MT_MM_TMSI_REALL_COMPL:
|
||||||
DEBUGP(DMM, "TMSI Reallocation Completed. Subscriber: %s\n",
|
DEBUGP(DMM, "TMSI Reallocation Completed. Subscriber: %s\n",
|
||||||
conn->subscr ?
|
subscr_name(conn->subscr));
|
||||||
subscr_name(conn->subscr) :
|
|
||||||
"unknown subscriber");
|
|
||||||
release_loc_updating_req(conn, 1);
|
release_loc_updating_req(conn, 1);
|
||||||
break;
|
break;
|
||||||
case GSM48_MT_MM_IMSI_DETACH_IND:
|
case GSM48_MT_MM_IMSI_DETACH_IND:
|
||||||
|
|
Loading…
Reference in New Issue