diff --git a/src/tun.c b/src/tun.c index 05c0a1e..61b3d12 100644 --- a/src/tun.c +++ b/src/tun.c @@ -93,11 +93,18 @@ tun_create_by_name(char *name, size_t len, const char *dev_name) static int tun_create_by_name(char *name, size_t len, const char *dev_name) { + int ret = snprintf(name, len, "%s", dev_name); + + if (ret <= 0 || (size_t)ret >= len) { + errno = EINVAL; + return -1; + } + struct ifreq ifr = { .ifr_flags = IFF_TUN | IFF_NO_PI, }; - int ret = snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", dev_name); + ret = snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", dev_name); if (ret <= 0 || (size_t)ret >= sizeof(ifr.ifr_name)) { errno = EINVAL;