diff --git a/getifaddr.c b/getifaddr.c index 5f95031..2d9474c 100644 --- a/getifaddr.c +++ b/getifaddr.c @@ -205,9 +205,13 @@ getsyshwaddr(char *buf, int len) continue; memcpy(mac, ifr.ifr_hwaddr.sa_data, 6); #else + if (p->ifa_addr->sa_family != AF_LINK) + continue; struct sockaddr_dl *sdl; sdl = (struct sockaddr_dl*)p->ifa_addr; - memcpy(mac, LLADDR(sdl), sdl->sdl_alen); + if (sdl->sdl_alen != 6) + continue; + memcpy(mac, LLADDR(sdl), 6); #endif if (MACADDR_IS_ZERO(mac)) continue;