Check for proper lapdm_datalink entity

Previously lapdm_datalink->entity->mode was dereferenced without
checking if correct entity is present. This might lead to
segfault. Check it explicitly before dereferencing, log error and
gracefully return if necessary.

Change-Id: I0361e3731e86712b415a370cab1128d611988f56
Related: OS#1898
This commit is contained in:
Max 2017-03-01 18:16:44 +01:00
parent 90fdb08e3e
commit 777be2e734
1 changed files with 8 additions and 2 deletions

View File

@ -852,10 +852,16 @@ static int rslms_rx_rll_udata_req(struct msgb *msg, struct lapdm_datalink *dl)
struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
uint8_t chan_nr = rllh->chan_nr;
uint8_t link_id = rllh->link_id;
int ui_bts = (le->mode == LAPDM_MODE_BTS && (link_id & 0x40));
uint8_t sapi = link_id & 7;
struct tlv_parsed tv;
int length;
int length, ui_bts;
if (!le) {
LOGP(DLLAPD, LOGL_ERROR, "lapdm_datalink without entity error\n");
msgb_free(msg);
return -EMLINK;
}
ui_bts = (le->mode == LAPDM_MODE_BTS && (link_id & 0x40));
/* check if the layer3 message length exceeds N201 */