diff --git a/sbin/routed/table.c b/sbin/routed/table.c index 3a30071eb121..7804d7c27cfb 100644 --- a/sbin/routed/table.c +++ b/sbin/routed/table.c @@ -1228,7 +1228,7 @@ read_rt(void) continue; /* ignore compat message */ #endif - strcpy(str, rtm_type_name(m.r.rtm.rtm_type)); + strlcpy(str, rtm_type_name(m.r.rtm.rtm_type), sizeof(str)); strp = &str[strlen(str)]; if (m.r.rtm.rtm_type <= RTM_CHANGE) strp += sprintf(strp," from pid %d",m.r.rtm.rtm_pid); diff --git a/sbin/routed/trace.c b/sbin/routed/trace.c index fcde2d45f2a0..fefa3a3aefdd 100644 --- a/sbin/routed/trace.c +++ b/sbin/routed/trace.c @@ -205,6 +205,8 @@ trace_close(int zap_stdio) fclose(ftrace); ftrace = NULL; fd = open(_PATH_DEVNULL, O_RDWR); + if (fd < 0) + return; if (isatty(STDIN_FILENO)) (void)dup2(fd, STDIN_FILENO); if (isatty(STDOUT_FILENO)) @@ -439,9 +441,12 @@ addrname(naddr addr, /* in network byte order */ } bufs[NUM_BUFS]; char *s, *sp; naddr dmask; + size_t l; int i; - s = strcpy(bufs[bufno].str, naddr_ntoa(addr)); + strlcpy(bufs[bufno].str, naddr_ntoa(addr), sizeof(bufs[bufno].str)); + s = bufs[bufno].str; + l = sizeof(bufs[bufno].str); bufno = (bufno+1) % NUM_BUFS; if (force == 1 || (force == 0 && mask != std_mask(addr))) { @@ -451,10 +456,11 @@ addrname(naddr addr, /* in network byte order */ if (mask + dmask == 0) { for (i = 0; i != 32 && ((1<