[sr-dev] git:master:90ee13d2: erlang: fix missing to free memory used for param specification

Seudin Kasumovic seudin.kasumovic at gmail.com
Thu Jan 4 22:58:31 CET 2018


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

Author: Seudin Kasumovic <seudin.kasumovic at gmail.com>
Committer: Seudin Kasumovic <seudin.kasumovic at gmail.com>
Date: 2018-01-04T22:56:15+01:00

erlang: fix missing to free memory used for param specification

- ensure to destroy fixup param specification when send erlang message

---

Modified: src/modules/erlang/erlang_mod.c

---

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

---

diff --git a/src/modules/erlang/erlang_mod.c b/src/modules/erlang/erlang_mod.c
index 54d2fa1733..83d007aa68 100644
--- a/src/modules/erlang/erlang_mod.c
+++ b/src/modules/erlang/erlang_mod.c
@@ -697,6 +697,7 @@ static int fixup_rpc(void** param, int param_no)
 
 			if (psp->setf != pv_list_set && psp->setf != pv_xbuff_set) {
 				LM_ERR("wrong parameter #%d: accepted types are list or xbuff\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -915,6 +916,7 @@ static int fixup_reg(void** param, int param_no)
 				erl_param->type = ERL_PARAM_XBUFF_SPEC;
 			} else {
 				LM_ERR("wrong parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1109,6 +1111,7 @@ static int fixup_reply(void** param, int param_no)
 				erl_param->type = ERL_PARAM_XBUFF_SPEC;
 			} else {
 				LM_ERR("wrong parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1354,6 +1357,7 @@ static int fixup_send(void** param, int param_no)
 		if (erl_param->value.sp.pvp.pvn.type == PV_NAME_INTSTR) {
 			if (fix_param_types(FPARAM_STR|FPARAM_STRING,param)) {
 				LM_ERR("wrong parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1363,6 +1367,7 @@ static int fixup_send(void** param, int param_no)
 		else {
 			if (erl_param->value.sp.type == PVT_XAVP) {
 				LM_ERR("XAVP not acceptable for parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1373,6 +1378,7 @@ static int fixup_send(void** param, int param_no)
 				erl_param->type = ERL_PARAM_XBUFF_SPEC;
 			} else {
 				LM_ERR("wrong parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1392,6 +1398,7 @@ static int fixup_send(void** param, int param_no)
 		if (erl_param->value.sp.pvp.pvn.type == PV_NAME_INTSTR) {
 			if (fix_param_types(FPARAM_STR|FPARAM_STRING,param)) {
 				LM_ERR("wrong parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1400,6 +1407,7 @@ static int fixup_send(void** param, int param_no)
 		} else {
 			if (erl_param->value.sp.type ==PVT_XAVP) {
 				LM_ERR("XAVP not acceptable for parameter #%d\n",param_no);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}
@@ -1415,7 +1423,7 @@ static int fixup_send(void** param, int param_no)
 				erl_param->type = ERL_PARAM_XBUFF_SPEC;
 			} else {
 				LM_ERR("wrong parameter #%d\n",param_no);
-				pv_spec_free(&erl_param->value.sp);
+				pv_spec_destroy(&erl_param->value.sp);
 				pkg_free((void*)erl_param);
 				return E_UNSPEC;
 			}




More information about the sr-dev mailing list