Module: kamailio
Branch: master
Commit: 080bffeb53181131f8fb8fab0ddcb771bbdd37dc
URL:
https://github.com/kamailio/kamailio/commit/080bffeb53181131f8fb8fab0ddcb77…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)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/080bffeb53181131f8fb8fab0ddcb77…
Patch:
https://github.com/kamailio/kamailio/commit/080bffeb53181131f8fb8fab0ddcb77…
---
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));