--- sysdep/bsd/krt-sock.c.orig 2011-01-07 22:56:18.000000000 +0200 +++ sysdep/bsd/krt-sock.c 2011-01-07 23:06:19.000000000 +0200 @@ -418,7 +418,6 @@ struct sockaddr_dl *dl = NULL; unsigned int i; struct iface *iface = NULL, f; - char *ifname = "(none)"; int fl = ifm->ifm_flags; for(i = 1; i!=0; i <<= 1) @@ -440,18 +439,18 @@ return; } - if(dl) ifname = dl->sdl_data; - iface = if_find_by_index(ifm->ifm_index); if(!iface) { /* New interface */ if(!dl) return; /* No interface name, ignoring */ - DBG("New interface \"%s\" found", ifname); bzero(&f, sizeof(f)); f.index = ifm->ifm_index; - strncpy(f.name, ifname, sizeof(f.name) -1); + strncpy(f.name, dl->sdl_data, sizeof(f.name) -1); + i = (dl->sdl_nlen >= sizeof(f.name) ? sizeof(f.name)-1 : dl->sdl_nlen); + f.name[i] = 0; + DBG("New interface \"%s\" found", f.name); } else {