X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fraw_socket_device.c;h=a5cd835c26294583f5e3fd23b91185a3cad76bf9;hp=0b971189d6e9156337973057c3fe054e83f5196c;hb=5eb72b73d3cd842e71e525413a46a55644ac3583;hpb=98bbc5ff0c0f16a84d07167d23d01cc91decdfc6 diff --git a/src/raw_socket_device.c b/src/raw_socket_device.c index 0b971189..a5cd835c 100644 --- a/src/raw_socket_device.c +++ b/src/raw_socket_device.c @@ -62,20 +62,21 @@ 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; } - memset(&sa, '0', sizeof(sa)); + memset(&sa, 0, sizeof(sa)); sa.sll_family = AF_PACKET; sa.sll_protocol = htons(ETH_P_ALL); 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; }