diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/network/if_indextoname.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/src/network/if_indextoname.c b/src/network/if_indextoname.c index 6ee7f13c..3b368bf0 100644 --- a/src/network/if_indextoname.c +++ b/src/network/if_indextoname.c @@ -3,6 +3,7 @@  #include <sys/socket.h>  #include <sys/ioctl.h>  #include <string.h> +#include <errno.h>  #include "syscall.h"  char *if_indextoname(unsigned index, char *name) @@ -14,5 +15,9 @@ char *if_indextoname(unsigned index, char *name)  	ifr.ifr_ifindex = index;  	r = ioctl(fd, SIOCGIFNAME, &ifr);  	__syscall(SYS_close, fd); -	return r < 0 ? 0 : strncpy(name, ifr.ifr_name, IF_NAMESIZE); +	if (r < 0) { +		if (errno == ENODEV) errno = ENXIO; +		return 0; +	} +	return strncpy(name, ifr.ifr_name, IF_NAMESIZE);  }  | 
