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

Author: Henning Westerholt <h...@kamailio.org>
Committer: Henning Westerholt <h...@kamailio.org>
Date: 2018-12-25T23:41:57+01:00

core: fix a resource leak in the case for memory allocation error

---

Modified: src/core/socket_info.c

---

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

---

diff --git a/src/core/socket_info.c b/src/core/socket_info.c
index 16704a6f29..0ba1be5fe3 100644
--- a/src/core/socket_info.c
+++ b/src/core/socket_info.c
@@ -215,7 +215,8 @@ static int new_addr_info2list(char* name, enum si_flags f,
 
 
 
-/* another helper function, it just creates a socket_info struct */
+/* another helper function, it just creates a socket_info struct
+ * allocates a si and a si->name in new pkg memory */
 static inline struct socket_info* new_sock_info(       char* name,
                                                                struct 
name_lst* addr_l,
                                                                unsigned short 
port, unsigned short proto,
@@ -702,7 +703,7 @@ static struct socket_info* new_sock2list(char* name, struct 
name_lst* addr_l,
                                                                        struct 
socket_info** list)
 {
        struct socket_info* si;
-       
+       /* allocates si and si->name in new pkg memory */
        si=new_sock_info(name, addr_l, port, proto, usename, useport, flags);
        if (si==0){
                LM_ERR("new_sock_info failed\n");
@@ -718,6 +719,8 @@ static struct socket_info* new_sock2list(char* name, struct 
name_lst* addr_l,
                si->mcast.s=(char*)pkg_malloc(si->mcast.len+1);
                if (si->mcast.s==0) {
                        PKG_MEM_ERROR;
+                       pkg_free(si->name.s);
+                       pkg_free(si);
                        return 0;
                }
                strcpy(si->mcast.s, mcast);


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to