diff --git a/mtce/src/hostw/hostwHdlr.cpp b/mtce/src/hostw/hostwHdlr.cpp index fb5e986a..4b26d2c3 100644 --- a/mtce/src/hostw/hostwHdlr.cpp +++ b/mtce/src/hostw/hostwHdlr.cpp @@ -177,6 +177,7 @@ int hostw_service_command ( hostw_socket_type * hostw_socket) */ int len = sizeof(msg[0]) + 1; + memset(msg, 0, 2*sizeof(msg[0])); socklen_t addrlen = (socklen_t) sizeof(hostw_socket->status_addr); len = recvfrom(hostw_socket->status_sock, (char*)&msg, diff --git a/mtce/src/hwmon/hwmonMsg.cpp b/mtce/src/hwmon/hwmonMsg.cpp index d84e0665..6572776b 100644 --- a/mtce/src/hwmon/hwmonMsg.cpp +++ b/mtce/src/hwmon/hwmonMsg.cpp @@ -246,6 +246,8 @@ int hwmon_service_inbox ( void ) return (FAIL_UNKNOWN_HOSTNAME); } + /* add string terminator for protection */ + msg.buf[BUF_SIZE-1] = '\0'; rc = hwmonJson_load_inv ( &msg.buf[0], inv ); if ( rc ) { diff --git a/mtce/src/maintenance/mtcCtrlMsg.cpp b/mtce/src/maintenance/mtcCtrlMsg.cpp index b8fa12b8..0be8d705 100755 --- a/mtce/src/maintenance/mtcCtrlMsg.cpp +++ b/mtce/src/maintenance/mtcCtrlMsg.cpp @@ -144,6 +144,7 @@ int mtc_service_inbox ( nodeLinkClass * obj_ptr, { bytes = sock_ptr->mtc_agent_rx_socket->read((char*)&msg, sizeof(msg)); } + msg.buf[BUF_SIZE-1] = '\0'; if ( bytes <= 0 ) { diff --git a/mtce/src/rmon/rmonMsg.cpp b/mtce/src/rmon/rmonMsg.cpp index a87738db..6660c40a 100644 --- a/mtce/src/rmon/rmonMsg.cpp +++ b/mtce/src/rmon/rmonMsg.cpp @@ -525,6 +525,7 @@ int rmon_service_inbox ( int clients ) bytes = recvfrom( rmon_sock.rmon_tx_sock, buf, RMON_MAX_LEN, 0, (struct sockaddr *)&rmon_sock.rmon_tx_addr, &len); if ( bytes > 0 ) { + buf[RMON_MAX_LEN-1] = '\0'; sscanf ( buf, "%99s %99s %u", str, registered_not, &port ); //RMON_MAX_LEN is defined as 100 strcpy( active_buf, buf );