device: gracefully handle device names exceeding IFNAMESIZ
[oweals/netifd.git] / tunnel.c
index 3fa3e2152ad1e63ed1e298684467cccc64ac6a69..1383384075cf57e8e95b3edf31602e57eb159639 100644 (file)
--- a/tunnel.c
+++ b/tunnel.c
@@ -72,7 +72,13 @@ tunnel_create(const char *name, struct device_type *devtype,
                return NULL;
 
        dev = &tun->dev;
-       device_init(dev, devtype, name);
+
+       if (device_init(dev, devtype, name) < 0) {
+               device_cleanup(dev);
+               free(tun);
+               return NULL;
+       }
+
        tun->set_state = dev->set_state;
        dev->set_state = tunnel_set_state;
        device_apply_config(dev, devtype, attr);