Module: kamailio Branch: master Commit: 080bffeb53181131f8fb8fab0ddcb771bbdd37dc URL: https://github.com/kamailio/kamailio/commit/080bffeb53181131f8fb8fab0ddcb771...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2017-07-07T09:48:53+02:00
jsonrpcs: safety vars init and release checks
---
Modified: src/modules/jsonrpcs/jsonrpcs_mod.c Modified: src/modules/jsonrpcs/jsonrpcs_sock.c
---
Diff: https://github.com/kamailio/kamailio/commit/080bffeb53181131f8fb8fab0ddcb771... Patch: https://github.com/kamailio/kamailio/commit/080bffeb53181131f8fb8fab0ddcb771...
---
diff --git a/src/modules/jsonrpcs/jsonrpcs_mod.c b/src/modules/jsonrpcs/jsonrpcs_mod.c index 7e0502964b..cd99ad8a01 100644 --- a/src/modules/jsonrpcs/jsonrpcs_mod.c +++ b/src/modules/jsonrpcs/jsonrpcs_mod.c @@ -756,6 +756,7 @@ static int jsonrpc_struct_add(srjson_t *jnode, char* fmt, ...) while(*fmt) { mname.s = va_arg(ap, char*); mname.len = (mname.s?strlen(mname.s):0); + if(mname.s==NULL) mname.s = "";
if (*fmt == '{' || *fmt == '[') { void_ptr = va_arg(ap, void**); diff --git a/src/modules/jsonrpcs/jsonrpcs_sock.c b/src/modules/jsonrpcs/jsonrpcs_sock.c index fbc9f8f5e6..c61fa6da28 100644 --- a/src/modules/jsonrpcs/jsonrpcs_sock.c +++ b/src/modules/jsonrpcs/jsonrpcs_sock.c @@ -388,9 +388,9 @@ int jsonrpc_dgram_init_server(jsonrpc_dgram_sockaddr_t *addr,
return 0; err_both: - close(socks->tx_sock); + if(socks->tx_sock>=0) close(socks->tx_sock); err_rx: - close(socks->rx_sock); + if(socks->rx_sock>=0) close(socks->rx_sock); return -1; }
@@ -528,7 +528,7 @@ static int jsonrpc_dgram_send_data(int fd, char* buf, unsigned int len, { int n; unsigned int optlen = sizeof(int); - int optval; + int optval = 0;
if(len == 0 || tolen ==0) return -1; @@ -536,7 +536,9 @@ static int jsonrpc_dgram_send_data(int fd, char* buf, unsigned int len, /*LM_DBG("destination address length is %i\n", tolen);*/ n=sendto(fd, buf, len, 0, to, tolen); if(n!=len) { - getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (int*)&optval, &optlen); + if(getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (int*)&optval, &optlen)==-1) { + LM_ERR("getsockopt failed\n"); + } LM_ERR("failed to send the response - ret: %d, len: %d (%d)," " err: %d - %s)\n", n, len, optval, errno, strerror(errno));