diff options
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/rtadvd/advcap.c | 4 | ||||
-rw-r--r-- | usr.sbin/rtadvd/config.c | 2 | ||||
-rw-r--r-- | usr.sbin/rtadvd/dump.c | 8 | ||||
-rw-r--r-- | usr.sbin/rtsold/dump.c | 21 | ||||
-rw-r--r-- | usr.sbin/rtsold/probe.c | 6 | ||||
-rw-r--r-- | usr.sbin/rtsold/rtsold.c | 2 |
6 files changed, 27 insertions, 16 deletions
diff --git a/usr.sbin/rtadvd/advcap.c b/usr.sbin/rtadvd/advcap.c index f201d0c..b83fbbb 100644 --- a/usr.sbin/rtadvd/advcap.c +++ b/usr.sbin/rtadvd/advcap.c @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $KAME: advcap.c,v 1.5 2001/02/01 09:12:08 jinmei Exp $ */ +/* $KAME: advcap.c,v 1.11 2003/05/19 09:46:50 keiichi Exp $ */ /* * Copyright (c) 1983 The Regents of the University of California. @@ -206,7 +206,7 @@ tnchktc() /* p now points to beginning of last field */ if (p[0] != 't' || p[1] != 'c') return (1); - strcpy(tcname, p+3); + strlcpy(tcname, p + 3, sizeof tcname); q = tcname; while (*q && *q != ':') q++; diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index f8c8abb..7f3d417 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -602,7 +602,7 @@ makeentry(buf, len, id, string, add) { char *ep = buf + len; - strcpy(buf, string); + strlcpy(buf, string, len); if (add) { char *cp; diff --git a/usr.sbin/rtadvd/dump.c b/usr.sbin/rtadvd/dump.c index 122f31f..bd19687 100644 --- a/usr.sbin/rtadvd/dump.c +++ b/usr.sbin/rtadvd/dump.c @@ -83,17 +83,17 @@ static char * ether_str(sdl) struct sockaddr_dl *sdl; { - static char ebuf[32]; + static char hbuf[32]; u_char *cp; if (sdl->sdl_alen && sdl->sdl_alen > 5) { cp = (u_char *)LLADDR(sdl); - sprintf(ebuf, "%x:%x:%x:%x:%x:%x", + snprintf(hbuf, sizeof(hbuf), "%x:%x:%x:%x:%x:%x", cp[0], cp[1], cp[2], cp[3], cp[4], cp[5]); } else - sprintf(ebuf, "NONE"); + snprintf(hbuf, sizeof(hbuf), "NONE"); - return(ebuf); + return(hbuf); } static void diff --git a/usr.sbin/rtsold/dump.c b/usr.sbin/rtsold/dump.c index 72d31b9..3902fc0 100644 --- a/usr.sbin/rtsold/dump.c +++ b/usr.sbin/rtsold/dump.c @@ -1,4 +1,4 @@ -/* $KAME: dump.c,v 1.8 2000/10/05 22:20:39 itojun Exp $ */ +/* $KAME: dump.c,v 1.12 2003/04/11 10:14:55 jinmei Exp $ */ /* * Copyright (C) 1999 WIDE Project. @@ -117,6 +117,8 @@ sec2str(total) int days, hours, mins, secs; int first = 1; char *p = result; + char *ep = &result[sizeof(result)]; + int n; days = total / 3600 / 24; hours = (total / 3600) % 24; @@ -125,16 +127,25 @@ sec2str(total) if (days) { first = 0; - p += sprintf(p, "%dd", days); + n = snprintf(p, ep - p, "%dd", days); + if (n < 0 || n >= ep - p) + return "?"; + p += n; } if (!first || hours) { first = 0; - p += sprintf(p, "%dh", hours); + n = snprintf(p, ep - p, "%dh", hours); + if (n < 0 || n >= ep - p) + return "?"; + p += n; } if (!first || mins) { first = 0; - p += sprintf(p, "%dm", mins); + n = snprintf(p, ep - p, "%dm", mins); + if (n < 0 || n >= ep - p) + return "?"; + p += n; } - sprintf(p, "%ds", secs); + snprintf(p, ep - p, "%ds", secs); return(result); } diff --git a/usr.sbin/rtsold/probe.c b/usr.sbin/rtsold/probe.c index 33f33f9..a946381 100644 --- a/usr.sbin/rtsold/probe.c +++ b/usr.sbin/rtsold/probe.c @@ -110,8 +110,8 @@ defrouter_probe(int ifindex) warnmsg(LOG_ERR, __func__, "socket: %s", strerror(errno)); return; } - bzero(&dr, sizeof(dr)); - strcpy(dr.ifname, "lo0"); /* dummy interface */ + memset(&dr, 0, sizeof(dr)); + strlcpy(dr.ifname, "lo0", sizeof dr.ifname); /* dummy interface */ if (ioctl(s, SIOCGDRLST_IN6, (caddr_t)&dr) < 0) { warnmsg(LOG_ERR, __func__, "ioctl(SIOCGDRLST_IN6): %s", strerror(errno)); @@ -148,7 +148,7 @@ sendprobe(struct in6_addr *addr, int ifindex) u_char ntopbuf[INET6_ADDRSTRLEN], ifnamebuf[IFNAMSIZ]; int hoplimit = 1; - bzero(&sa6_probe, sizeof(sa6_probe)); + memset(&sa6_probe, 0, sizeof(sa6_probe)); sa6_probe.sin6_family = AF_INET6; sa6_probe.sin6_len = sizeof(sa6_probe); sa6_probe.sin6_addr = *addr; diff --git a/usr.sbin/rtsold/rtsold.c b/usr.sbin/rtsold/rtsold.c index cc300ac..a1fd93c 100644 --- a/usr.sbin/rtsold/rtsold.c +++ b/usr.sbin/rtsold/rtsold.c @@ -359,7 +359,7 @@ ifconfig(char *ifname) memset(ifinfo, 0, sizeof(*ifinfo)); ifinfo->sdl = sdl; - strncpy(ifinfo->ifname, ifname, sizeof(ifinfo->ifname)); + strlcpy(ifinfo->ifname, ifname, sizeof(ifinfo->ifname)); /* construct a router solicitation message */ if (make_packet(ifinfo)) |