Module: kamailio
Branch: master
Commit: 9c1b55e90648f81514bdf2570eeeae83bf46dfff
URL: 
https://github.com/kamailio/kamailio/commit/9c1b55e90648f81514bdf2570eeeae83bf46dfff

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: GitHub <nore...@github.com>
Date: 2016-09-19T23:04:38+02:00

Merge pull request #788 from phil-lavin/mem-leaks

Fix memory leaks in presence and purple

---

Modified: modules/presence/presentity.c
Modified: modules/purple/mapping.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/9c1b55e90648f81514bdf2570eeeae83bf46dfff.diff
Patch: 
https://github.com/kamailio/kamailio/commit/9c1b55e90648f81514bdf2570eeeae83bf46dfff.patch

---

diff --git a/modules/presence/presentity.c b/modules/presence/presentity.c
index d81b90e..e601153 100644
--- a/modules/presence/presentity.c
+++ b/modules/presence/presentity.c
@@ -396,9 +396,11 @@ int delete_presentity_if_dialog_id_exists(presentity_t* 
presentity, char* dialog
        if(result == NULL)
                return -3;
 
-       // No results from query definitely means no dialog exists
-       if (result->n <= 0)
+       /* no results from query definitely means no dialog exists */
+       if (result->n <= 0) {
+               pa_dbf.free_result(pa_db, result);
                return 0;
+       }
 
        // Loop the rows returned from the DB
        for (i=0; i < result->n; i++)
diff --git a/modules/purple/mapping.c b/modules/purple/mapping.c
index e1aa00e..bbdb69f 100644
--- a/modules/purple/mapping.c
+++ b/modules/purple/mapping.c
@@ -133,8 +133,11 @@ char *find_sip_user(char *extern_user) {
        
        if (result == NULL)
                return NULL;
-       if (result->n <= 0)
+
+       if (result->n <= 0) {
+               pa_dbf.free_result(pa_db, result);
                return NULL;
+       }
 
        row = &result->rows[0];
        row_vals = ROW_VALUES(row);
@@ -208,6 +211,7 @@ extern_account_t *find_accounts(char* sip_user, int* count) 
{
                return NULL;
        }
        if (result->n <= 0) {
+               pa_dbf.free_result(pa_db, result);
                LM_ERR("result count = %d\n", result->n);
                return NULL;
        }
@@ -290,8 +294,11 @@ extern_user_t *find_users(char *sip_user, int* count) {
 
        if (result == NULL)
                return NULL;
-       if (result->n <= 0)
+
+       if (result->n <= 0) {
+               pa_dbf.free_result(pa_db, result);
                return NULL;
+       }
 
        users = (extern_user_t*) pkg_malloc(sizeof(extern_user_t)*result->n);
 


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to