From d4b8abd58351fbd1b61cbad7898ae30dc0ee9da4 Mon Sep 17 00:00:00 2001 From: netblue30 Date: Thu, 15 Dec 2016 11:52:19 -0500 Subject: fix older platforms --- src/firejail/fs.c | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/firejail/fs.c b/src/firejail/fs.c index adddf626b..890f281aa 100644 --- a/src/firejail/fs.c +++ b/src/firejail/fs.c @@ -532,29 +532,35 @@ void fs_proc_sys_dev_boot(void) { disable_file(BLACKLIST_FILE, "/dev/port"); - // disable various ipc sockets - struct stat s; - // disable /run/user/{uid}/gnupg - char *fnamegpg; - if (asprintf(&fnamegpg, "/run/user/%d/gnupg", getuid()) == -1) - errExit("asprintf"); - if (stat(fnamegpg, &s) == -1) - mkdir_attr(fnamegpg, 0700, getuid(), getgid()); - if (stat(fnamegpg, &s) == 0) - disable_file(BLACKLIST_FILE, fnamegpg); - free(fnamegpg); - - // disable /run/user/{uid}/systemd - char *fnamesysd; - if (asprintf(&fnamesysd, "/run/user/%d/systemd", getuid()) == -1) + // disable various ipc sockets in /run/user + struct stat s; + + char *fname; + if (asprintf(&fname, "/run/usr/%d", getuid()) == -1) errExit("asprintf"); - if (stat(fnamesysd, &s) == -1) - mkdir_attr(fnamesysd, 0755, getuid(), getgid()); - if (stat(fnamesysd, &s) == 0) - disable_file(BLACKLIST_FILE, fnamesysd); - free(fnamesysd); - + if (is_dir(fname)) { // older distros don't have this directory + // disable /run/user/{uid}/gnupg + char *fnamegpg; + if (asprintf(&fnamegpg, "/run/user/%d/gnupg", getuid()) == -1) + errExit("asprintf"); + if (stat(fnamegpg, &s) == -1) + mkdir_attr(fnamegpg, 0700, getuid(), getgid()); + if (stat(fnamegpg, &s) == 0) + disable_file(BLACKLIST_FILE, fnamegpg); + free(fnamegpg); + + // disable /run/user/{uid}/systemd + char *fnamesysd; + if (asprintf(&fnamesysd, "/run/user/%d/systemd", getuid()) == -1) + errExit("asprintf"); + if (stat(fnamesysd, &s) == -1) + mkdir_attr(fnamesysd, 0755, getuid(), getgid()); + if (stat(fnamesysd, &s) == 0) + disable_file(BLACKLIST_FILE, fnamesysd); + free(fnamesysd); + } + free(fname); // todo: investigate #if 0 -- cgit v1.2.3-70-g09d2