From 892ccaf6f9782d8d5159d45649adfa0f8c8d06a6 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 26 Sep 2017 15:02:41 +0200 Subject: tools: uapi: only make sure socket file is socket --- src/tools/ipc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tools/ipc.c b/src/tools/ipc.c index d0b5a46..45278ec 100644 --- a/src/tools/ipc.c +++ b/src/tools/ipc.c @@ -129,11 +129,16 @@ out: static bool userspace_has_wireguard_interface(const char *interface) { - FILE *f = userspace_interface_file(interface); - if (!f) + struct stat sbuf; + char path[PATH_MAX] = { 0 }; + + if (strchr(interface, '/')) return false; - fclose(f); - return true; + if (snprintf(path, sizeof(path) - 1, SOCK_PATH "%s" SOCK_SUFFIX, interface) < 0) + return false; + if (stat(path, &sbuf) < 0) + return false; + return S_ISSOCK(sbuf.st_mode); } static int userspace_get_wireguard_interfaces(struct inflatable_buffer *buffer) -- cgit v1.2.3-59-g8ed1b