From 460803f3c3740e076f6db8d56f900b6a53f5ef8f Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Fri, 7 Jan 2022 16:42:46 +0100 Subject: move socket by default to /run/rvnit/rvnit.sock and create with perm 0700 --- rvnit.c | 17 ++++++++++++++++- rvnitctl.c | 5 ++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/rvnit.c b/rvnit.c index b35850b..f427fe1 100644 --- a/rvnit.c +++ b/rvnit.c @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -172,7 +173,19 @@ socket_loop(void* ignored) { (void)ignored; - const char *path = "/tmp/rvnit.sock"; + static const char default_sock[] = "/run/rvnit/rvnit.sock"; + const char *path = getenv("RVNIT_SOCK"); + if (!path || !*path) + path = default_sock; + + char *last_slash = strrchr(path, '/'); + if (last_slash) { + char dir[PATH_MAX]; + memcpy(dir, path, last_slash - path); + dir[last_slash - path] = 0; + mkdir(dir, 0700); + // ignore errors + } struct sockaddr_un addr = { 0 }; addr.sun_family = AF_UNIX; @@ -183,7 +196,9 @@ socket_loop(void* ignored) exit(111); } unlink(path); + mode_t mask = umask(0077); int r = bind(listenfd, (struct sockaddr *)&addr, sizeof addr); + umask(mask); if (r < 0) { perror("bind"); exit(111); diff --git a/rvnitctl.c b/rvnitctl.c index c6bec1a..7d48e01 100644 --- a/rvnitctl.c +++ b/rvnitctl.c @@ -13,7 +13,10 @@ main(int argc, char *argv[]) exit(2); } - const char *path = "/tmp/rvnit.sock"; + static const char default_sock[] = "/run/rvnit/rvnit.sock"; + const char *path = getenv("RVNIT_SOCK"); + if (!path || !*path) + path = default_sock; struct sockaddr_un addr = { 0 }; addr.sun_family = AF_UNIX; -- cgit 1.4.1