diff options
author | brian <brian@FreeBSD.org> | 2000-06-19 21:43:48 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2000-06-19 21:43:48 +0000 |
commit | d765e4453fe669c5448762433b83a890f2d74743 (patch) | |
tree | 704dd71fff8f20de9251752d9023ddb87df6cb62 /usr.sbin | |
parent | 293ce673c84d3c70bfd4f0552df5770369c1f401 (diff) | |
download | FreeBSD-src-d765e4453fe669c5448762433b83a890f2d74743.zip FreeBSD-src-d765e4453fe669c5448762433b83a890f2d74743.tar.gz |
Don't mis-match interface names in iface_Create()
Submitted by: Adrian Penisoara <ady@freebsd.ady.ro>
Diffstat (limited to 'usr.sbin')
-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 2ddd5b0..8d95ced 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)); |