diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c index e94cb6bc..a0af9c1f 100644 --- a/cts/agents/cpg_test_agent.c +++ b/cts/agents/cpg_test_agent.c @@ -124,6 +124,9 @@ static char* err_status_string (char * buf, size_t buf_len, msg_status_t status) strncpy (buf, "UNKNOWN_ERR", buf_len); break; } + if (buf_len > 0) { + buf[buf_len - 1] = '\0'; + } return buf; } diff --git a/exec/logsys.c b/exec/logsys.c index c6786892..30ab9ae1 100644 --- a/exec/logsys.c +++ b/exec/logsys.c @@ -936,7 +936,9 @@ static void logsys_subsys_init ( LOGSYS_LOGGER_INIT_DONE; } strncpy (logsys_loggers[subsysid].subsys, subsys, - LOGSYS_MAX_SUBSYS_NAMELEN); + sizeof (logsys_loggers[subsysid].subsys)); + logsys_loggers[subsysid].subsys[ + sizeof (logsys_loggers[subsysid].subsys) - 1] = '\0'; } /* @@ -992,7 +994,8 @@ int _logsys_system_setup( (logsys_loggers[i].init_status == LOGSYS_LOGGER_NEEDS_INIT)) { strncpy (tempsubsys, logsys_loggers[i].subsys, - LOGSYS_MAX_SUBSYS_NAMELEN); + sizeof (tempsubsys)); + tempsubsys[sizeof (tempsubsys) - 1] = '\0'; logsys_subsys_init(tempsubsys, i); } } diff --git a/exec/util.c b/exec/util.c index 54152c30..a3c2b878 100644 --- a/exec/util.c +++ b/exec/util.c @@ -117,7 +117,8 @@ char *getcs_name_t (cs_name_t *name) } void setcs_name_t (cs_name_t *name, char *str) { - strncpy ((char *)name->value, str, CS_MAX_NAME_LENGTH); + strncpy ((char *)name->value, str, sizeof (name->value)); + ((char *)name->value)[sizeof (name->value) - 1] = '\0'; if (strlen ((char *)name->value) > CS_MAX_NAME_LENGTH) { name->length = CS_MAX_NAME_LENGTH; } else { diff --git a/test/sa_error.c b/test/sa_error.c index 679601c7..61924c78 100644 --- a/test/sa_error.c +++ b/test/sa_error.c @@ -46,6 +46,9 @@ int get_sa_error(cs_error_t error, char *str, int len) return -1; } strncpy(str, sa_error_list[error], len); + if (len > 0) { + str[len - 1] = '\0'; + } return 0; } diff --git a/tools/corosync-notifyd.c b/tools/corosync-notifyd.c index 6e3b45ea..9f84cd2c 100644 --- a/tools/corosync-notifyd.c +++ b/tools/corosync-notifyd.c @@ -336,7 +336,8 @@ _cs_confdb_find_object (confdb_handle_t handle, char tmp_name[CS_MAX_NAME_LENGTH]; cs_error_t res = CS_OK; - strncpy (tmp_name, name_pt, CS_MAX_NAME_LENGTH); + strncpy (tmp_name, name_pt, sizeof (tmp_name)); + tmp_name[sizeof (tmp_name) - 1] = '\0'; obj_name_pt = strtok_r(tmp_name, SEPERATOR_STR, &save_pt); while (obj_name_pt != NULL) { @@ -834,7 +835,8 @@ _cs_local_node_info_get(char **nodename, uint32_t *nodeid) corosync_cfg_finalize(cfg_handle); if (rc != CS_OK) { local_nodeid = 0; - strncpy(local_nodename, "localhost", CS_MAX_NAME_LENGTH); + strncpy(local_nodename, "localhost", sizeof (local_nodename)); + local_nodename[sizeof (local_nodename) - 1] = '\0'; } else { gethostname(local_nodename, CS_MAX_NAME_LENGTH); } @@ -1003,7 +1005,8 @@ main(int argc, char *argv[]) break; case 'm': conf[CS_NTF_SNMP] = 1; - strncpy(snmp_manager_buf, optarg, CS_MAX_NAME_LENGTH); + strncpy(snmp_manager_buf, optarg, sizeof (snmp_manager_buf)); + snmp_manager_buf[sizeof (snmp_manager_buf) - 1] = '\0'; snmp_manager = snmp_manager_buf; break; case 'o': diff --git a/tools/corosync-objctl.c b/tools/corosync-objctl.c index 2332b793..3052ff0e 100644 --- a/tools/corosync-objctl.c +++ b/tools/corosync-objctl.c @@ -406,7 +406,8 @@ static cs_error_t find_object (confdb_handle_t handle, char tmp_name[OBJ_NAME_SIZE]; cs_error_t res = CS_OK; - strncpy (tmp_name, name_pt, OBJ_NAME_SIZE); + strncpy (tmp_name, name_pt, sizeof (tmp_name)); + tmp_name[sizeof (tmp_name) - 1] = '\0'; obj_name_pt = strtok_r(tmp_name, SEPERATOR_STR, &save_pt); while (obj_name_pt != NULL) { @@ -516,7 +517,8 @@ static void create_object(confdb_handle_t handle, char * name_pt) char tmp_name[OBJ_NAME_SIZE]; cs_error_t res; - strncpy (tmp_name, name_pt, OBJ_NAME_SIZE); + strncpy (tmp_name, name_pt, sizeof (tmp_name)); + tmp_name[sizeof (tmp_name) - 1] = '\0'; obj_name_pt = strtok_r(tmp_name, SEPERATOR_STR, &save_pt); while (obj_name_pt != NULL) { @@ -569,7 +571,8 @@ static void create_object_key(confdb_handle_t handle, char *name_pt) get_parent_name(name_pt, parent_name); get_key(name_pt, key_name, key_value); - strncpy (tmp_name, parent_name, OBJ_NAME_SIZE); + strncpy (tmp_name, parent_name, sizeof (tmp_name)); + tmp_name[sizeof (tmp_name) - 1] = '\0'; obj_name_pt = strtok_r(tmp_name, SEPERATOR_STR, &save_pt); /*