Add support to link against libresolv Mac OS X
[tinc] / src / raw_socket_device.c
index c61e43c..427fb3f 100644 (file)
@@ -1,7 +1,7 @@
 /*
     device.c -- raw socket
     Copyright (C) 2002-2005 Ivo Timmermans,
-                  2002-2012 Guus Sliepen <guus@tinc-vpn.org>
+                  2002-2014 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -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;
        }