aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/ussd.c
diff options
context:
space:
mode:
authorSergey Kostanbaev <sergey.kostanbaev@gmail.com>2015-10-28 15:18:21 +0300
committerIvan Kluchnikov <kluchnikovi@gmail.com>2017-02-07 18:59:54 +0300
commit420e4d445cda26e6fa62baf71f343be6de5f0b15 (patch)
tree42e9ebb1be3bb85db7eb16609f0c43219e7c59be /openbsc/src/libmsc/ussd.c
parenta8f56961beefa3442b97795d369837704a51d3c3 (diff)
libmsc: fix no return and use after free
Diffstat (limited to 'openbsc/src/libmsc/ussd.c')
-rw-r--r--openbsc/src/libmsc/ussd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/openbsc/src/libmsc/ussd.c b/openbsc/src/libmsc/ussd.c
index ad838f503..97e22b86a 100644
--- a/openbsc/src/libmsc/ussd.c
+++ b/openbsc/src/libmsc/ussd.c
@@ -141,7 +141,7 @@ int on_ussd_response(const struct ss_request *req, const char *extention)
struct ussd_request ussd_req;
struct gsm_ussd* ussdq;
memset(&ussd_req, 0, sizeof(ussd_req));
- int rc;
+ int rc = 0;
switch (req->message_type) {
case GSM0480_MTYPE_REGISTER:
@@ -183,9 +183,11 @@ int on_ussd_response(const struct ss_request *req, const char *extention)
}
if (req->message_type == GSM0480_MTYPE_RELEASE_COMPLETE) {
- ussd_session_free(ussdq);
msc_release_connection(ussdq->conn);
+ ussd_session_free(ussdq);
}
+
+ return rc;
}
static int ussd_sup_send_reject(struct gsm_subscriber_connection *conn,