diff options
author | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-05-16 19:37:47 +0300 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-05-16 19:37:47 +0300 |
commit | 0e282735509e24ee360876adaafe45992816b5df (patch) | |
tree | 5dcfc32b3c0630c15f7e4193ff41e0f3af92138f | |
parent | 0e883ba6d412db09140445dff0f425247a6c7039 (diff) |
ussd: Avoid crashing when no connection is present in the transaction
If we get a ussd response for transaction, but there is no connection
for this transaction, we will now complain, delete the message and return.
-rw-r--r-- | openbsc/src/libmsc/ussd.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/ussd.c b/openbsc/src/libmsc/ussd.c index 23adfeef1..604c686d3 100644 --- a/openbsc/src/libmsc/ussd.c +++ b/openbsc/src/libmsc/ussd.c @@ -218,6 +218,13 @@ int on_ussd_response(struct gsm_network *net, msgb_put(msg, reqhdr->component_length); ssrep.transaction_id = (trans->transaction_id << 4) ^ 0x80; + + if (!trans->conn) { + DEBUGP(DSS, "No connection for transaction with id: %d\n", + trans->transaction_id); + msgb_free(msg); + return -1; + } rc = gsm0480_send_component(trans->conn, msg, &ssrep); if (reqhdr->message_type == GSM0480_MTYPE_RELEASE_COMPLETE) { |