[sr-dev] git:5.0:6ae5f704: erlang: improve error handling

Seudin Kasumovic seudin.kasumovic at gmail.com
Thu Jan 4 09:30:55 CET 2018


Module: kamailio
Branch: 5.0
Commit: 6ae5f7048ad26cb1e7bdb0cb56b02bd8590f8f73
URL: https://github.com/kamailio/kamailio/commit/6ae5f7048ad26cb1e7bdb0cb56b02bd8590f8f73

Author: Seudin Kasumovic <seudin.kasumovic at gmail.com>
Committer: Seudin Kasumovic <seudin.kasumovic at gmail.com>
Date: 2018-01-04T09:26:53+01:00

erlang: improve error handling

Ensure check value returned from function and log error.

(cherry picked from commit b43609dec2c4089e02b11fd23099ab01b2ebc956)

---

Modified: src/modules/erlang/handle_emsg.c
Modified: src/modules/erlang/pv_xbuff.c
Modified: src/modules/erlang/worker.c

---

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

---

diff --git a/src/modules/erlang/handle_emsg.c b/src/modules/erlang/handle_emsg.c
index 1e36be5cb6..96de5e01d8 100644
--- a/src/modules/erlang/handle_emsg.c
+++ b/src/modules/erlang/handle_emsg.c
@@ -437,7 +437,11 @@ int erlang_whereis(cnode_handler_t *phandler,erlang_ref_ex_t *ref, erlang_pid *p
 		return 0;
 	}
 
-	ei_decode_atom(request->buff,&request->index,route+sizeof("erlang:")-1);
+	if(ei_decode_atom(request->buff,&request->index,route+sizeof("erlang:")-1)) {
+		LM_ERR("error: badarg\n");
+		ei_x_encode_atom(response,"badarg");
+		return 0;
+	}
 
 	rt = route_get(&event_rt, route);
 	if (rt < 0 || event_rt.rlist[rt] == NULL) {
@@ -820,7 +824,9 @@ int handle_erlang_msg(cnode_handler_t *phandler, erlang_msg * msg)
 				ret = handle_req_ref_tuple(phandler, msg);
 				break;
 			case ERL_PID_EXT:
-				ei_decode_pid(request->buff,&tmpindex,&from);
+				if(ei_decode_pid(request->buff,&tmpindex,&from)) {
+					LM_ERR("failed to decode pid\n");
+				}
 				ret = handle_send(phandler, msg);
 				break;
 			default:
diff --git a/src/modules/erlang/pv_xbuff.c b/src/modules/erlang/pv_xbuff.c
index e8d26cdb9a..1682e52f3b 100644
--- a/src/modules/erlang/pv_xbuff.c
+++ b/src/modules/erlang/pv_xbuff.c
@@ -988,7 +988,10 @@ int xavp_decode(ei_x_buff *xbuff, int *index, sr_xavp_t **xavp,int level)
 			return -1;
 		}
 
-		ei_decode_atom(xbuff->buff,index,pbuf);
+		if (ei_decode_atom(xbuff->buff,index,pbuf)) {
+			LM_ERR("failed to decode atom\n");
+			goto err;
+		}
 
 		val.type = SR_XTYPE_STR;
 		val.v.s.s = pbuf;
diff --git a/src/modules/erlang/worker.c b/src/modules/erlang/worker.c
index 2a02e51df6..71af3b0298 100644
--- a/src/modules/erlang/worker.c
+++ b/src/modules/erlang/worker.c
@@ -59,7 +59,10 @@ int handle_worker(handler_common_t *phandler)
 	int rc;
 
 	/* ensure be connected */
-	enode_connect();
+	if (enode_connect()){
+		LM_ERR("failed to connect!\n");
+		return -1;
+	}
 
 	memset((void*)&msg,0,sizeof(msg));
 




More information about the sr-dev mailing list