X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fraw_socket_device.c;h=a5cd835c26294583f5e3fd23b91185a3cad76bf9;hp=c61e43c9c810153337d43fbc141da5caed1d7ede;hb=5eb72b73d3cd842e71e525413a46a55644ac3583;hpb=987f2a3dd64620141d30bb8b5d5f38733497af42 diff --git a/src/raw_socket_device.c b/src/raw_socket_device.c index c61e43c9..a5cd835c 100644 --- a/src/raw_socket_device.c +++ b/src/raw_socket_device.c @@ -62,10 +62,11 @@ static bool setup_device(void) { memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ); + ifr.ifr_ifrn.ifrn_name[IFNAMSIZ - 1] = 0; + if(ioctl(device_fd, SIOCGIFINDEX, &ifr)) { close(device_fd); - logger(LOG_ERR, "Can't find interface %s: %s", iface, - strerror(errno)); + logger(LOG_ERR, "Can't find interface %s: %s", ifr.ifr_ifrn.ifrn_name, strerror(errno)); return false; } @@ -75,7 +76,7 @@ static bool setup_device(void) { sa.sll_ifindex = ifr.ifr_ifindex; if(bind(device_fd, (struct sockaddr *) &sa, (socklen_t) sizeof(sa))) { - logger(LOG_ERR, "Could not bind %s to %s: %s", device, iface, strerror(errno)); + logger(LOG_ERR, "Could not bind %s to %s: %s", device, ifr.ifr_ifrn.ifrn_name, strerror(errno)); return false; }