[sr-dev] git:master:1d2c16c2: presence: free cloned dialog_id in case of errors

Daniel-Constantin Mierla miconda at gmail.com
Wed Nov 2 14:08:19 CET 2016


Module: kamailio
Branch: master
Commit: 1d2c16c2c65d65bc6bb348800a935712eacfaca9
URL: https://github.com/kamailio/kamailio/commit/1d2c16c2c65d65bc6bb348800a935712eacfaca9

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2016-11-02T13:50:42+01:00

presence: free cloned dialog_id in case of errors

---

Modified: modules/presence/presentity.c

---

Diff:  https://github.com/kamailio/kamailio/commit/1d2c16c2c65d65bc6bb348800a935712eacfaca9.diff
Patch: https://github.com/kamailio/kamailio/commit/1d2c16c2c65d65bc6bb348800a935712eacfaca9.patch

---

diff --git a/modules/presence/presentity.c b/modules/presence/presentity.c
index 4c8c914..3f79cfa 100644
--- a/modules/presence/presentity.c
+++ b/modules/presence/presentity.c
@@ -430,11 +430,13 @@ int delete_presentity_if_dialog_id_exists(presentity_t* presentity, char* dialog
 				pa_dbf.free_result(pa_db, result);
 				result = NULL;
 				free(db_dialog_id);
+				db_dialog_id = NULL;
 
 				return 1;
 			}
 
 			free(db_dialog_id);
+			db_dialog_id = NULL;
 		}
 	}
 
@@ -693,10 +695,13 @@ int update_presentity(struct sip_msg* msg, presentity_t* presentity, str* body,
 			check_if_dialog(*body, &is_dialog, &dialog_id);
 			if ( dialog_id ) {
 				if (delete_presentity_if_dialog_id_exists(presentity, dialog_id) < 0) {
+					free(dialog_id);
+					dialog_id = NULL;
 					goto error;
 				}
 
 				free(dialog_id);
+				dialog_id = NULL;
 			}
 			LM_DBG("inserting %d cols into table\n",n_query_cols);
 
@@ -795,6 +800,10 @@ int update_presentity(struct sip_msg* msg, presentity_t* presentity, str* body,
 			if(check_if_dialog(*body, &is_dialog, &dialog_id)< 0)
 			{
 				LM_ERR("failed to check if dialog stored\n");
+				if(dialog_id) {
+					free(dialog_id);
+					dialog_id = NULL;
+				}
 				goto error;
 			}
 
@@ -808,13 +817,26 @@ int update_presentity(struct sip_msg* msg, presentity_t* presentity, str* body,
 			if(check_if_dialog(old_body, &is_dialog, &old_dialog_id)< 0)
 			{
 				LM_ERR("failed to check if dialog stored\n");
+				if(old_dialog_id) {
+					free(old_dialog_id);
+					old_dialog_id = NULL;
+				}
 				goto error;
 			}
 
-			if(is_dialog==0 ) /* if the old body has no dialog - overwrite */
+			/* if the old body has no dialog - overwrite */
+			if(is_dialog==0 ) {
+				if(old_dialog_id) {
+					free(old_dialog_id);
+					old_dialog_id = NULL;
+				}
 				goto after_dialog_check;
+			}
 
-			free(old_dialog_id);
+			if(old_dialog_id) {
+				free(old_dialog_id);
+				old_dialog_id = NULL;
+			}
 
 			sender.s = (char*)row_vals[rez_sender_col].val.string_val;
 			sender.len= strlen(sender.s);




More information about the sr-dev mailing list