Make sure realname is always initialized.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 17 Apr 2017 11:02:39 +0000 (13:02 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 17 Apr 2017 11:02:39 +0000 (13:02 +0200)
src/bsd/device.c

index 5428262..fbc7593 100644 (file)
@@ -198,18 +198,19 @@ static bool setup_device(void) {
 
        // Guess what the corresponding interface is called
 
-       char *realname;
+       char *realname = NULL;
 
 #if defined(HAVE_FDEVNAME)
-       realname = fdevname(device_fd) ? : device;
+       realname = fdevname(device_fd);
 #elif defined(HAVE_DEVNAME)
        struct stat buf;
        if(!fstat(device_fd, &buf))
-               realname = devname(buf.st_rdev, S_IFCHR) ? : device;
-#else
-       realname = device;
+               realname = devname(buf.st_rdev, S_IFCHR);
 #endif
 
+       if(!realname)
+               realname = device;
+
        if(!get_config_string(lookup_config(config_tree, "Interface"), &iface))
                iface = xstrdup(strrchr(realname, '/') ? strrchr(realname, '/') + 1 : realname);
        else if(strcmp(iface, strrchr(realname, '/') ? strrchr(realname, '/') + 1 : realname))