[sr-dev] git:master:b27384a0: p_usrloc: free allocated items in case of no more memory during domain add

Daniel-Constantin Mierla miconda at gmail.com
Mon Mar 28 10:58:03 CEST 2016


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

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2016-03-27T11:48:33+02:00

p_usrloc: free allocated items in case of no more memory during domain add

---

Modified: modules/p_usrloc/dlist.c

---

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

---

diff --git a/modules/p_usrloc/dlist.c b/modules/p_usrloc/dlist.c
index 5c16508..75914f5 100644
--- a/modules/p_usrloc/dlist.c
+++ b/modules/p_usrloc/dlist.c
@@ -52,7 +52,7 @@ static inline struct domain_list_item * find_dlist (str *name) {
 
 	for (item = domain_list; item != NULL; item = item->next) {
 		if (item->name.len == name->len
-		        && memcmp (item->name.s, name->s, name->len) == 0) {
+				&& memcmp (item->name.s, name->s, name->len) == 0) {
 			return item;
 		}
 	}
@@ -64,16 +64,17 @@ static inline struct domain_list_item * find_dlist (str *name) {
 
 static inline struct domain_list_item * add_to_dlist (str *name, int type) {
 	struct domain_list_item *item;
-        int i;
+	int i;
 	item = (struct domain_list_item *)
-	       pkg_malloc (sizeof (struct domain_list_item));
+				pkg_malloc (sizeof (struct domain_list_item));
 	if (item == NULL) {
-		LM_ERR("Out of shared memory.\n");
+		LM_ERR("Out of pkg memory.\n");
 		return NULL;
 	}
 	item->name.s = (char *) pkg_malloc (name->len + 1);
 	if (item->name.s == NULL) {
-		LM_ERR("Out of shared memory.\n");
+		LM_ERR("Out of pkg memory (1).\n");
+		pkg_free(item);
 		return NULL;
 	}
 	memcpy (item->name.s, name->s, name->len);
@@ -86,7 +87,9 @@ static inline struct domain_list_item * add_to_dlist (str *name, int type) {
 
 	item->domain.table = (hslot_t*)pkg_malloc(sizeof(hslot_t) * ul_hash_size);
 	if (!item->domain.table) {
-		LM_ERR("no memory left 2\n");
+		LM_ERR("Out of pkg memory (2)\n");
+		pkg_free(item->name.s);
+		pkg_free(item);
 		return NULL;
 	}
 




More information about the sr-dev mailing list