From: Guus Sliepen <guus@tinc-vpn.org>
Date: Tue, 19 May 2015 20:26:32 +0000 (+0200)
Subject: Quit with an error message if ioctl(TUNSETIFF) fails.
X-Git-Tag: release-1.1pre12~141
X-Git-Url: https://tinc-vpn.org/git/browse?a=commitdiff_plain;h=69ba5f621e4931417f9f41061a7689e36c70e3d9;p=tinc

Quit with an error message if ioctl(TUNSETIFF) fails.

It is possible that opening /dev/net/tun works but that interface
creation itself fails, for example if a non-root user tries to create a
new interface, or if the desired interface is already opened by another
process. In this case, the ioctl() fails, but we actually silently
ignored this condition.
---

diff --git a/src/linux/device.c b/src/linux/device.c
index 5717d920..a06e6daf 100644
--- a/src/linux/device.c
+++ b/src/linux/device.c
@@ -101,6 +101,9 @@ static bool setup_device(void) {
 		strncpy(ifrname, ifr.ifr_name, IFNAMSIZ);
 		free(iface);
 		iface = xstrdup(ifrname);
+	} else {
+		logger(DEBUG_ALWAYS, LOG_ERR, "Could not create a tun/tap interface from %s: %s", device, strerror(errno));
+		return false;
 	}
 
 	logger(DEBUG_ALWAYS, LOG_INFO, "%s is a %s", device, device_info);