=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/netstat/route.c,v retrieving revision 1.24 retrieving revision 1.25 diff -c -r1.24 -r1.25 *** src/usr.bin/netstat/route.c 1998/05/18 19:03:29 1.24 --- src/usr.bin/netstat/route.c 1998/06/23 22:40:40 1.25 *************** *** 1,4 **** ! /* $OpenBSD: route.c,v 1.24 1998/05/18 19:03:29 deraadt Exp $ */ /* $NetBSD: route.c,v 1.15 1996/05/07 02:55:06 thorpej Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: route.c,v 1.25 1998/06/23 22:40:40 millert Exp $ */ /* $NetBSD: route.c,v 1.15 1996/05/07 02:55:06 thorpej Exp $ */ /* *************** *** 38,44 **** #if 0 static char sccsid[] = "from: @(#)route.c 8.3 (Berkeley) 3/9/94"; #else ! static char *rcsid = "$OpenBSD: route.c,v 1.24 1998/05/18 19:03:29 deraadt Exp $"; #endif #endif /* not lint */ --- 38,44 ---- #if 0 static char sccsid[] = "from: @(#)route.c 8.3 (Berkeley) 3/9/94"; #else ! static char *rcsid = "$OpenBSD: route.c,v 1.25 1998/06/23 22:40:40 millert Exp $"; #endif #endif /* not lint */ *************** *** 404,409 **** --- 404,410 ---- { char workbuf[128], *cplim; register char *cp = workbuf; + size_t n; switch(sa->sa_family) { case AF_INET: *************** *** 444,452 **** cplim = ""; for (i = 0; i < sdl->sdl_alen; i++, lla++) { ! cp += snprintf(cp, workbuf + sizeof (workbuf) - cp, "%s%x", cplim, *lla); cplim = ":"; } cp = workbuf; --- 445,456 ---- cplim = ""; for (i = 0; i < sdl->sdl_alen; i++, lla++) { ! n = snprintf(cp, workbuf + sizeof (workbuf) - cp, "%s%x", cplim, *lla); + if (n >= workbuf + sizeof (workbuf) - cp) + n = workbuf + sizeof (workbuf) - cp - 1; + cp += n; cplim = ":"; } cp = workbuf; *************** *** 471,484 **** slim = sa->sa_len + (u_char *) sa; cplim = cp + sizeof(workbuf) - 6; ! cp += snprintf(cp, cplim - cp, "(%d)", sa->sa_family); while (s < slim && cp < cplim) { ! cp += snprintf(cp, workbuf + sizeof (workbuf) - cp, " %02x", *s++); ! if (s < slim) ! cp += snprintf(cp, workbuf + sizeof (workbuf) - cp, "%02x", *s++); } cp = workbuf; } --- 475,498 ---- slim = sa->sa_len + (u_char *) sa; cplim = cp + sizeof(workbuf) - 6; ! n = snprintf(cp, cplim - cp, "(%d)", sa->sa_family); ! if (n >= cplim - cp) ! n = cplim - cp - 1; ! cp += n; while (s < slim && cp < cplim) { ! n = snprintf(cp, workbuf + sizeof (workbuf) - cp, " %02x", *s++); ! if (n >= workbuf + sizeof (workbuf) - cp) ! n = workbuf + sizeof (workbuf) - cp - 1; ! cp += n; ! if (s < slim) { ! n = snprintf(cp, workbuf + sizeof (workbuf) - cp, "%02x", *s++); + if (n >= workbuf + sizeof (workbuf) - cp) + n = workbuf + sizeof (workbuf) - cp - 1; + cp += n; + } } cp = workbuf; }