diff options
| -rw-r--r-- | usr.sbin/ppp/iface.c | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/usr.sbin/ppp/iface.c b/usr.sbin/ppp/iface.c index 2ddd5b0a4052..8d95ced007ca 100644 --- a/usr.sbin/ppp/iface.c +++ b/usr.sbin/ppp/iface.c @@ -95,7 +95,7 @@ struct iface *  iface_Create(const char *name)  {    int mib[6], s; -  size_t needed; +  size_t needed, namelen;    char *buf, *ptr, *end;    struct if_msghdr *ifm;    struct ifa_msghdr *ifam; @@ -140,13 +140,14 @@ iface_Create(const char *name)    ptr = buf;    end = buf + needed;    iface = NULL; +  namelen = strlen(name);    while (ptr < end && iface == NULL) {      ifm = (struct if_msghdr *)ptr;			/* On if_msghdr */      if (ifm->ifm_type != RTM_IFINFO)        break;      dl = (struct sockaddr_dl *)(ifm + 1);		/* Single _dl at end */ -    if (!strncmp(name, dl->sdl_data, dl->sdl_nlen)) { +    if (dl->sdl_nlen == namelen && !strncmp(name, dl->sdl_data, namelen)) {        iface = (struct iface *)malloc(sizeof *iface);        if (iface == NULL) {          fprintf(stderr, "iface_Create: malloc: %s\n", strerror(errno)); | 
