From: Pekka Pessi <[email protected]>

---
 src/message-waiting.c |   45 ++++++++++++++++++++++++++++++---------------
 1 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/src/message-waiting.c b/src/message-waiting.c
index 0e376b6..5d1126b 100644
--- a/src/message-waiting.c
+++ b/src/message-waiting.c
@@ -179,20 +179,22 @@ static DBusMessage *set_cphs_mbdn(struct 
ofono_message_waiting *mw,
 
        if ((mw->ef_cphs_mbdn_length && !mw_mailbox_to_cphs_record[mailbox]) ||
                        mw->cphs_mbdn_not_provided == TRUE) {
-               if (msg)
+               if (msg != NULL)
                        return __ofono_error_not_supported(msg);
 
                return NULL;
        }
 
        if (mw->ef_cphs_mbdn_length == 0) {
-               if (msg)
+               if (msg != NULL)
                        return __ofono_error_sim_not_ready(msg);
 
                return NULL;
        }
 
        req = g_new0(struct mbdn_set_request, 1);
+       if (req == NULL)
+               goto error;
 
        req->mw = mw;
        req->mailbox = mailbox;
@@ -206,13 +208,17 @@ static DBusMessage *set_cphs_mbdn(struct 
ofono_message_waiting *mw,
                        sync ? cphs_mbdn_sync_cb : mbdn_set_cb,
                        OFONO_SIM_FILE_STRUCTURE_FIXED,
                        mw_mailbox_to_cphs_record[mailbox],
-                       efmbdn, mw->ef_cphs_mbdn_length, req) == -1) {
-               g_free(req);
+                       efmbdn, mw->ef_cphs_mbdn_length, req) == -1)
+               goto error;
 
-               if (msg)
-                       return __ofono_error_failed(msg);
-       } else
-               req->msg = msg ? dbus_message_ref(msg) : NULL;
+       req->msg = msg ? dbus_message_ref(msg) : NULL;
+       return NULL;
+
+error:
+       g_free(req);
+
+       if (msg != NULL)
+               return __ofono_error_failed(msg);
 
        return NULL;
 }
@@ -292,6 +298,8 @@ static DBusMessage *set_mbdn(struct ofono_message_waiting 
*mw, int mailbox,
        }
 
        req = g_new0(struct mbdn_set_request, 1);
+       if (req == NULL)
+               goto error;
 
        req->mw = mw;
        req->mailbox = mailbox;
@@ -303,13 +311,17 @@ static DBusMessage *set_mbdn(struct ofono_message_waiting 
*mw, int mailbox,
        if (ofono_sim_write(req->mw->sim, SIM_EFMBDN_FILEID, mbdn_set_cb,
                        OFONO_SIM_FILE_STRUCTURE_FIXED,
                        req->mw->efmbdn_record_id[mailbox],
-                       efmbdn, req->mw->efmbdn_length, req) == -1) {
-               g_free(req);
+                       efmbdn, req->mw->efmbdn_length, req) == -1)
+               goto error;
 
-               if (msg)
-                       return __ofono_error_failed(msg);
-       } else
-               req->msg = msg ? dbus_message_ref(msg) : NULL;
+       req->msg = msg ? dbus_message_ref(msg) : NULL;
+       return NULL;
+
+error:
+       g_free(req);
+
+       if (msg)
+               return __ofono_error_failed(msg);
 
        return NULL;
 }
@@ -990,13 +1002,16 @@ struct ofono_message_waiting 
*ofono_message_waiting_create(struct ofono_modem *m
        struct ofono_message_waiting *mw;
 
        mw = g_try_new0(struct ofono_message_waiting, 1);
-
        if (mw == NULL)
                return NULL;
 
        mw->atom = __ofono_modem_add_atom(modem,
                                        OFONO_ATOM_TYPE_MESSAGE_WAITING,
                                        mw_remove, mw);
+       if (mw->atom == NULL) {
+               g_free(mw);
+               return NULL;
+       }
 
        return mw;
 }
-- 
1.7.1

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to