tnt has uploaded this change for review. ( https://gerrit.osmocom.org/13963


Change subject: libmsc: Make sure to not dereference a NULL trans
......................................................................

libmsc: Make sure to not dereference a NULL trans

All those were identified by gcc. At this point in the code, trans is
NULL and so you can't call LOG_TRANS because it will try to access the
log_subsys field.

Instead call LOG_TRANS_CAT with manually specified category where
applicable (or other logging primitive depending on what the surrounding
code does)

Change-Id: Ia14bd28e1db570c487ad8e90e29a69208e2226f2
Signed-off-by: Sylvain Munaut <[email protected]>
---
M src/libmsc/gsm_04_08_cc.c
M src/libmsc/gsm_04_11.c
M src/libmsc/gsm_09_11.c
M src/libmsc/transaction.c
4 files changed, 12 insertions(+), 12 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/63/13963/1

diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 2869bba..7d09e0e 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -1888,7 +1888,7 @@
                trans = trans_alloc(net, vsub, TRANS_CC,
                                    TRANS_ID_UNASSIGNED, data->callref);
                if (!trans) {
-                       LOG_TRANS(trans, LOGL_ERROR, "No memory for trans.\n");
+                       LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "No memory for 
trans.\n");
                        vlr_subscr_put(vsub, __func__);
                        /* Ressource unavailable */
                        mncc_release_ind(net, NULL, data->callref,
@@ -2102,12 +2102,12 @@
        int i, rc = 0;

        if (msg_type & 0x80) {
-               LOG_TRANS(trans, LOGL_DEBUG, "MSG 0x%2x not defined for PD 
error\n", msg_type);
+               LOG_TRANS_CAT(trans, DCC, LOGL_DEBUG, "MSG 0x%2x not defined 
for PD error\n", msg_type);
                return -EINVAL;
        }

        if (!vsub) {
-               LOG_TRANS(trans, LOGL_ERROR, "Invalid conn: no subscriber\n");
+               LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "Invalid conn: no 
subscriber\n");
                return -EINVAL;
        }

@@ -2121,7 +2121,7 @@
                                    TRANS_CC,
                                    transaction_id, 
msc_cc_next_outgoing_callref());
                if (!trans) {
-                       LOG_TRANS(trans, LOGL_ERROR, "No memory for trans.\n");
+                       LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "No memory for 
trans.\n");
                        rc = gsm48_tx_simple(msc_a,
                                             GSM48_PDISC_CC | (transaction_id 
<< 4),
                                             GSM48_MT_CC_RELEASE_COMPL);
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 22e55dd..d5c2516 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -1008,7 +1008,7 @@
        /* Allocate a new transaction */
        struct gsm_trans *trans = trans_alloc(net, vsub, TRANS_SMS, tid, 
new_callref++);
        if (!trans) {
-               LOG_TRANS(trans, LOGL_ERROR, "No memory for transaction\n");
+               LOG_TRANS_CAT(trans, DLSMS, LOGL_ERROR, "No memory for 
transaction\n");
                return NULL;
        }

@@ -1072,7 +1072,7 @@
        /* Generate a new transaction ID */
        tid = trans_assign_trans_id(net, vsub, TRANS_SMS);
        if (tid == -1) {
-               LOG_TRANS(trans, LOGL_ERROR, "No available transaction IDs\n");
+               LOG_TRANS_CAT(trans, DLSMS, LOGL_ERROR, "No available 
transaction IDs\n");
                return NULL;
        }

@@ -1227,7 +1227,7 @@
         * A transaction we created but don't know about?
         */
        if (!trans && (transaction_id & 0x8) == 0) {
-               LOG_TRANS(trans, LOGL_ERROR, "trans_id=%x allocated by us but 
known "
+               LOG_TRANS_CAT(trans, DLSMS, LOGL_ERROR, "trans_id=%x allocated 
by us but known "
                        "to us anymore. We are ignoring it, maybe a CP-ERROR "
                        "from a MS?\n",
                        transaction_id);
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index 984cc53..500da3a 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -135,8 +135,8 @@
                 * a supplementary service.
                 */
                if (msg_type != GSM0480_MTYPE_REGISTER) {
-                       LOG_TRANS(trans, LOGL_ERROR, "Rx wrong SS/USSD message 
type for new transaction: %s\n",
-                                 gsm48_pdisc_msgtype_name(GSM48_PDISC_NC_SS, 
msg_type));
+                       LOG_MSC_A(msc_a, LOGL_ERROR, "Rx wrong SS/USSD message 
type for new transaction: %s\n",
+                                 gsm48_pdisc_msgtype_name(GSM48_PDISC_NC_SS, 
msg_type));
                        gsm48_tx_simple(msc_a,
                                GSM48_PDISC_NC_SS | (tid << 4),
                                GSM0480_MTYPE_RELEASE_COMPLETE);
@@ -145,7 +145,7 @@

                trans = trans_alloc(net, vsub, TRANS_USSD, tid, new_callref++);
                if (!trans) {
-                       LOG_TRANS(trans, LOGL_ERROR, " -> No memory for 
trans\n");
+                       LOG_MSC_A(msc_a, LOGL_ERROR, " -> No memory for 
trans\n");
                        gsm48_tx_simple(msc_a,
                                GSM48_PDISC_NC_SS | (tid << 4),
                                GSM0480_MTYPE_RELEASE_COMPLETE);
@@ -322,7 +322,7 @@
                TRANS_ID_UNASSIGNED, gsup_msg->session_id);

        if (!trans) {
-               LOG_TRANS(trans, LOGL_ERROR, " -> No memory for trans\n");
+               LOG_TRANS_CAT(trans, DMM, LOGL_ERROR, " -> No memory for 
trans\n");
                return NULL;
        }

diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index d6f8c3b..161b180 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -131,7 +131,7 @@

        /* a valid subscriber is indispensable */
        if (vsub == NULL) {
-               LOG_TRANS(trans, LOGL_ERROR, "unable to alloc transaction, 
invalid subscriber (NULL)\n");
+               LOG_TRANS_CAT(trans, DMSC, LOGL_ERROR, "unable to alloc 
transaction, invalid subscriber (NULL)\n");
                return NULL;
        }


--
To view, visit https://gerrit.osmocom.org/13963
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia14bd28e1db570c487ad8e90e29a69208e2226f2
Gerrit-Change-Number: 13963
Gerrit-PatchSet: 1
Gerrit-Owner: tnt <[email protected]>

Reply via email to