pimd: strcpy -> strlcpy

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2019-05-06 21:26:15 +00:00
parent 9736ba9e1f
commit c35b7e6bea
4 changed files with 57 additions and 55 deletions

View file

@ -2001,9 +2001,9 @@ static void pim_show_state(struct pim_instance *pim, struct vty *vty,
ifp_in = pim_if_find_by_vif_index(pim, c_oil->oil.mfcc_parent); ifp_in = pim_if_find_by_vif_index(pim, c_oil->oil.mfcc_parent);
if (ifp_in) if (ifp_in)
strcpy(in_ifname, ifp_in->name); strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
else else
strcpy(in_ifname, "<iif?>"); strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
if (src_or_group) { if (src_or_group) {
if (strcmp(src_or_group, src_str) if (strcmp(src_or_group, src_str)
@ -2085,9 +2085,9 @@ static void pim_show_state(struct pim_instance *pim, struct vty *vty,
now - c_oil->oif_creation[oif_vif_index]); now - c_oil->oif_creation[oif_vif_index]);
if (ifp_out) if (ifp_out)
strcpy(out_ifname, ifp_out->name); strlcpy(out_ifname, ifp_out->name, sizeof(out_ifname));
else else
strcpy(out_ifname, "<oif?>"); strlcpy(out_ifname, "<oif?>", sizeof(out_ifname));
if (uj) { if (uj) {
json_ifp_out = json_object_new_object(); json_ifp_out = json_object_new_object();
@ -2366,37 +2366,37 @@ static void json_object_pim_upstream_add(json_object *json,
static const char * static const char *
pim_upstream_state2brief_str(enum pim_upstream_state join_state, pim_upstream_state2brief_str(enum pim_upstream_state join_state,
char *state_str) char *state_str, size_t state_str_len)
{ {
switch (join_state) { switch (join_state) {
case PIM_UPSTREAM_NOTJOINED: case PIM_UPSTREAM_NOTJOINED:
strcpy(state_str, "NotJ"); strlcpy(state_str, "NotJ", state_str_len);
break; break;
case PIM_UPSTREAM_JOINED: case PIM_UPSTREAM_JOINED:
strcpy(state_str, "J"); strlcpy(state_str, "J", state_str_len);
break; break;
default: default:
strcpy(state_str, "Unk"); strlcpy(state_str, "Unk", state_str_len);
} }
return state_str; return state_str;
} }
static const char *pim_reg_state2brief_str(enum pim_reg_state reg_state, static const char *pim_reg_state2brief_str(enum pim_reg_state reg_state,
char *state_str) char *state_str, size_t state_str_len)
{ {
switch (reg_state) { switch (reg_state) {
case PIM_REG_NOINFO: case PIM_REG_NOINFO:
strcpy(state_str, "RegNI"); strlcpy(state_str, "RegNI", state_str_len);
break; break;
case PIM_REG_JOIN: case PIM_REG_JOIN:
strcpy(state_str, "RegJ"); strlcpy(state_str, "RegJ", state_str_len);
break; break;
case PIM_REG_JOIN_PENDING: case PIM_REG_JOIN_PENDING:
case PIM_REG_PRUNE: case PIM_REG_PRUNE:
strcpy(state_str, "RegP"); strlcpy(state_str, "RegP", state_str_len);
break; break;
default: default:
strcpy(state_str, "Unk"); strlcpy(state_str, "Unk", state_str_len);
} }
return state_str; return state_str;
} }
@ -2464,13 +2464,13 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
pim_time_timer_to_hhmmss(msdp_reg_timer, sizeof(msdp_reg_timer), pim_time_timer_to_hhmmss(msdp_reg_timer, sizeof(msdp_reg_timer),
up->t_msdp_reg_timer); up->t_msdp_reg_timer);
pim_upstream_state2brief_str(up->join_state, state_str); pim_upstream_state2brief_str(up->join_state, state_str, sizeof(state_str));
if (up->reg_state != PIM_REG_NOINFO) { if (up->reg_state != PIM_REG_NOINFO) {
char tmp_str[PIM_REG_STATE_STR_LEN]; char tmp_str[PIM_REG_STATE_STR_LEN];
sprintf(state_str + strlen(state_str), ",%s", sprintf(state_str + strlen(state_str), ",%s",
pim_reg_state2brief_str(up->reg_state, pim_reg_state2brief_str(up->reg_state, tmp_str,
tmp_str)); sizeof(tmp_str)));
} }
if (uj) { if (uj) {
@ -2521,7 +2521,7 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
pim_upstream_state2str(up->join_state)); pim_upstream_state2str(up->join_state));
json_object_string_add( json_object_string_add(
json_row, "regState", json_row, "regState",
pim_reg_state2str(up->reg_state, state_str)); pim_reg_state2str(up->reg_state, state_str, sizeof(state_str)));
json_object_string_add(json_row, "upTime", uptime); json_object_string_add(json_row, "upTime", uptime);
json_object_string_add(json_row, "joinTimer", json_object_string_add(json_row, "joinTimer",
join_timer); join_timer);
@ -5234,9 +5234,9 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
ifp_in = pim_if_find_by_vif_index(pim, c_oil->oil.mfcc_parent); ifp_in = pim_if_find_by_vif_index(pim, c_oil->oil.mfcc_parent);
if (ifp_in) if (ifp_in)
strcpy(in_ifname, ifp_in->name); strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
else else
strcpy(in_ifname, "<iif?>"); strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
if (uj) { if (uj) {
@ -5291,9 +5291,9 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
found_oif = 1; found_oif = 1;
if (ifp_out) if (ifp_out)
strcpy(out_ifname, ifp_out->name); strlcpy(out_ifname, ifp_out->name, sizeof(out_ifname));
else else
strcpy(out_ifname, "<oif?>"); strlcpy(out_ifname, "<oif?>", sizeof(out_ifname));
if (uj) { if (uj) {
json_ifp_out = json_object_new_object(); json_ifp_out = json_object_new_object();
@ -5351,27 +5351,27 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
} else { } else {
if (c_oil->oif_flags[oif_vif_index] if (c_oil->oif_flags[oif_vif_index]
& PIM_OIF_FLAG_PROTO_PIM) { & PIM_OIF_FLAG_PROTO_PIM) {
strcpy(proto, "PIM"); strlcpy(proto, "PIM", sizeof(proto));
} }
if (c_oil->oif_flags[oif_vif_index] if (c_oil->oif_flags[oif_vif_index]
& PIM_OIF_FLAG_PROTO_IGMP) { & PIM_OIF_FLAG_PROTO_IGMP) {
strcpy(proto, "IGMP"); strlcpy(proto, "IGMP", sizeof(proto));
} }
if (c_oil->oif_flags[oif_vif_index] if (c_oil->oif_flags[oif_vif_index]
& PIM_OIF_FLAG_PROTO_VXLAN) { & PIM_OIF_FLAG_PROTO_VXLAN) {
strcpy(proto, "VxLAN"); strlcpy(proto, "VxLAN", sizeof(proto));
} }
if (c_oil->oif_flags[oif_vif_index] if (c_oil->oif_flags[oif_vif_index]
& PIM_OIF_FLAG_PROTO_SOURCE) { & PIM_OIF_FLAG_PROTO_SOURCE) {
strcpy(proto, "SRC"); strlcpy(proto, "SRC", sizeof(proto));
} }
if (c_oil->oif_flags[oif_vif_index] if (c_oil->oif_flags[oif_vif_index]
& PIM_OIF_FLAG_PROTO_STAR) { & PIM_OIF_FLAG_PROTO_STAR) {
strcpy(proto, "STAR"); strlcpy(proto, "STAR", sizeof(proto));
} }
vty_out(vty, vty_out(vty,
@ -5410,9 +5410,9 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
found_oif = 0; found_oif = 0;
if (ifp_in) if (ifp_in)
strcpy(in_ifname, ifp_in->name); strlcpy(in_ifname, ifp_in->name, sizeof(in_ifname));
else else
strcpy(in_ifname, "<iif?>"); strlcpy(in_ifname, "<iif?>", sizeof(in_ifname));
if (uj) { if (uj) {
@ -5439,7 +5439,7 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
json_object_string_add(json_source, "iif", in_ifname); json_object_string_add(json_source, "iif", in_ifname);
json_oil = NULL; json_oil = NULL;
} else { } else {
strcpy(proto, "STATIC"); strlcpy(proto, "STATIC", sizeof(proto));
} }
for (oif_vif_index = 0; oif_vif_index < MAXVIFS; for (oif_vif_index = 0; oif_vif_index < MAXVIFS;
@ -5461,9 +5461,9 @@ static void show_mroute(struct pim_instance *pim, struct vty *vty,
found_oif = 1; found_oif = 1;
if (ifp_out) if (ifp_out)
strcpy(out_ifname, ifp_out->name); strlcpy(out_ifname, ifp_out->name, sizeof(out_ifname));
else else
strcpy(out_ifname, "<oif?>"); strlcpy(out_ifname, "<oif?>", sizeof(out_ifname));
if (uj) { if (uj) {
json_ifp_out = json_object_new_object(); json_ifp_out = json_object_new_object();
@ -8998,7 +8998,7 @@ static void ip_msdp_show_peers(struct pim_instance *pim, struct vty *vty,
pim_time_uptime(timebuf, sizeof(timebuf), pim_time_uptime(timebuf, sizeof(timebuf),
now - mp->uptime); now - mp->uptime);
} else { } else {
strcpy(timebuf, "-"); strlcpy(timebuf, "-", sizeof(timebuf));
} }
pim_inet4_dump("<peer?>", mp->peer, peer_str, sizeof(peer_str)); pim_inet4_dump("<peer?>", mp->peer, peer_str, sizeof(peer_str));
pim_inet4_dump("<local?>", mp->local, local_str, pim_inet4_dump("<local?>", mp->local, local_str,
@ -9055,7 +9055,7 @@ static void ip_msdp_show_peers_detail(struct pim_instance *pim, struct vty *vty,
pim_time_uptime(timebuf, sizeof(timebuf), pim_time_uptime(timebuf, sizeof(timebuf),
now - mp->uptime); now - mp->uptime);
} else { } else {
strcpy(timebuf, "-"); strlcpy(timebuf, "-", sizeof(timebuf));
} }
pim_inet4_dump("<local?>", mp->local, local_str, pim_inet4_dump("<local?>", mp->local, local_str,
sizeof(local_str)); sizeof(local_str));
@ -9234,18 +9234,18 @@ static void ip_msdp_show_sa(struct pim_instance *pim, struct vty *vty, bool uj)
if (sa->flags & PIM_MSDP_SAF_PEER) { if (sa->flags & PIM_MSDP_SAF_PEER) {
pim_inet4_dump("<rp?>", sa->rp, rp_str, sizeof(rp_str)); pim_inet4_dump("<rp?>", sa->rp, rp_str, sizeof(rp_str));
if (sa->up) { if (sa->up) {
strcpy(spt_str, "yes"); strlcpy(spt_str, "yes", sizeof(spt_str));
} else { } else {
strcpy(spt_str, "no"); strlcpy(spt_str, "no", sizeof(spt_str));
} }
} else { } else {
strcpy(rp_str, "-"); strlcpy(rp_str, "-", sizeof(rp_str));
strcpy(spt_str, "-"); strlcpy(spt_str, "-", sizeof(spt_str));
} }
if (sa->flags & PIM_MSDP_SAF_LOCAL) { if (sa->flags & PIM_MSDP_SAF_LOCAL) {
strcpy(local_str, "yes"); strlcpy(local_str, "yes", sizeof(local_str));
} else { } else {
strcpy(local_str, "no"); strlcpy(local_str, "no", sizeof(local_str));
} }
if (uj) { if (uj) {
json_object_object_get_ex(json, grp_str, &json_group); json_object_object_get_ex(json, grp_str, &json_group);
@ -9299,19 +9299,19 @@ static void ip_msdp_show_sa_entry_detail(struct pim_msdp_sa *sa,
pim_inet4_dump("<rp?>", sa->rp, rp_str, sizeof(rp_str)); pim_inet4_dump("<rp?>", sa->rp, rp_str, sizeof(rp_str));
pim_inet4_dump("<peer?>", sa->peer, peer_str, sizeof(peer_str)); pim_inet4_dump("<peer?>", sa->peer, peer_str, sizeof(peer_str));
if (sa->up) { if (sa->up) {
strcpy(spt_str, "yes"); strlcpy(spt_str, "yes", sizeof(spt_str));
} else { } else {
strcpy(spt_str, "no"); strlcpy(spt_str, "no", sizeof(spt_str));
} }
} else { } else {
strcpy(rp_str, "-"); strlcpy(rp_str, "-", sizeof(rp_str));
strcpy(peer_str, "-"); strlcpy(peer_str, "-", sizeof(peer_str));
strcpy(spt_str, "-"); strlcpy(spt_str, "-", sizeof(spt_str));
} }
if (sa->flags & PIM_MSDP_SAF_LOCAL) { if (sa->flags & PIM_MSDP_SAF_LOCAL) {
strcpy(local_str, "yes"); strlcpy(local_str, "yes", sizeof(local_str));
} else { } else {
strcpy(local_str, "no"); strlcpy(local_str, "no", sizeof(local_str));
} }
pim_time_timer_to_hhmmss(statetimer, sizeof(statetimer), pim_time_timer_to_hhmmss(statetimer, sizeof(statetimer),
sa->sa_state_timer); sa->sa_state_timer);

View file

@ -1078,7 +1078,7 @@ static enum pim_msdp_err pim_msdp_peer_new(struct pim_instance *pim,
mp->mesh_group_name = XSTRDUP(MTYPE_PIM_MSDP_MG_NAME, mesh_group_name); mp->mesh_group_name = XSTRDUP(MTYPE_PIM_MSDP_MG_NAME, mesh_group_name);
mp->state = PIM_MSDP_INACTIVE; mp->state = PIM_MSDP_INACTIVE;
mp->fd = -1; mp->fd = -1;
strcpy(mp->last_reset, "-"); strlcpy(mp->last_reset, "-", sizeof(mp->last_reset));
/* higher IP address is listener */ /* higher IP address is listener */
if (ntohl(mp->local.s_addr) > ntohl(mp->peer.s_addr)) { if (ntohl(mp->local.s_addr) > ntohl(mp->peer.s_addr)) {
mp->flags |= PIM_MSDP_PEERF_LISTENER; mp->flags |= PIM_MSDP_PEERF_LISTENER;

View file

@ -1399,23 +1399,24 @@ const char *pim_upstream_state2str(enum pim_upstream_state join_state)
return "Unknown"; return "Unknown";
} }
const char *pim_reg_state2str(enum pim_reg_state reg_state, char *state_str) const char *pim_reg_state2str(enum pim_reg_state reg_state, char *state_str,
size_t state_str_len)
{ {
switch (reg_state) { switch (reg_state) {
case PIM_REG_NOINFO: case PIM_REG_NOINFO:
strcpy(state_str, "RegNoInfo"); strlcpy(state_str, "RegNoInfo", state_str_len);
break; break;
case PIM_REG_JOIN: case PIM_REG_JOIN:
strcpy(state_str, "RegJoined"); strlcpy(state_str, "RegJoined", state_str_len);
break; break;
case PIM_REG_JOIN_PENDING: case PIM_REG_JOIN_PENDING:
strcpy(state_str, "RegJoinPend"); strlcpy(state_str, "RegJoinPend", state_str_len);
break; break;
case PIM_REG_PRUNE: case PIM_REG_PRUNE:
strcpy(state_str, "RegPrune"); strlcpy(state_str, "RegPrune", state_str_len);
break; break;
default: default:
strcpy(state_str, "RegUnknown"); strlcpy(state_str, "RegUnknown", state_str_len);
} }
return state_str; return state_str;
} }
@ -1432,7 +1433,7 @@ static int pim_upstream_register_stop_timer(struct thread *t)
char state_str[PIM_REG_STATE_STR_LEN]; char state_str[PIM_REG_STATE_STR_LEN];
zlog_debug("%s: (S,G)=%s[%s] upstream register stop timer %s", zlog_debug("%s: (S,G)=%s[%s] upstream register stop timer %s",
__PRETTY_FUNCTION__, up->sg_str, pim->vrf->name, __PRETTY_FUNCTION__, up->sg_str, pim->vrf->name,
pim_reg_state2str(up->reg_state, state_str)); pim_reg_state2str(up->reg_state, state_str, sizeof(state_str)));
} }
switch (up->reg_state) { switch (up->reg_state) {

View file

@ -283,7 +283,8 @@ void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream *up,
const char *pim_upstream_state2str(enum pim_upstream_state join_state); const char *pim_upstream_state2str(enum pim_upstream_state join_state);
#define PIM_REG_STATE_STR_LEN 12 #define PIM_REG_STATE_STR_LEN 12
const char *pim_reg_state2str(enum pim_reg_state state, char *state_str); const char *pim_reg_state2str(enum pim_reg_state state, char *state_str,
size_t state_str_len);
int pim_upstream_inherited_olist_decide(struct pim_instance *pim, int pim_upstream_inherited_olist_decide(struct pim_instance *pim,
struct pim_upstream *up); struct pim_upstream *up);