diff options
author | Tomi Leppänen <tomi.leppanen@jolla.com> | 2021-02-22 09:59:55 +0200 |
---|---|---|
committer | Tomi Leppänen <tomi.leppanen@jolla.com> | 2021-02-22 10:01:51 +0200 |
commit | 89ba89bacf51eee6284397f4d01ff8759bddebe7 (patch) | |
tree | e4a69a98a70e4f939d950e98c7d7357fa1d473ab /src | |
parent | Add missing linefeeds in stderr logging (diff) | |
download | firejail-89ba89bacf51eee6284397f4d01ff8759bddebe7.tar.gz firejail-89ba89bacf51eee6284397f4d01ff8759bddebe7.tar.zst firejail-89ba89bacf51eee6284397f4d01ff8759bddebe7.zip |
Add checks to fs_private_dir_mount
Check that the directory exists before attempting to mount it.
Signed-off-by: Tomi Leppänen <tomi.leppanen@jolla.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/firejail/fs_etc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/firejail/fs_etc.c b/src/firejail/fs_etc.c index 60008f442..b9ed81db3 100644 --- a/src/firejail/fs_etc.c +++ b/src/firejail/fs_etc.c | |||
@@ -188,6 +188,17 @@ void fs_private_dir_copy(const char *private_dir, const char *private_run_dir, c | |||
188 | } | 188 | } |
189 | 189 | ||
190 | void fs_private_dir_mount(const char *private_dir, const char *private_run_dir) { | 190 | void fs_private_dir_mount(const char *private_dir, const char *private_run_dir) { |
191 | assert(private_dir); | ||
192 | assert(private_run_dir); | ||
193 | |||
194 | // nothing to do if directory does not exist | ||
195 | struct stat s; | ||
196 | if (stat(private_dir, &s) == -1) { | ||
197 | if (arg_debug) | ||
198 | printf("Cannot find %s\n", private_dir); | ||
199 | return; | ||
200 | } | ||
201 | |||
191 | if (arg_debug) | 202 | if (arg_debug) |
192 | printf("Mount-bind %s on top of %s\n", private_run_dir, private_dir); | 203 | printf("Mount-bind %s on top of %s\n", private_run_dir, private_dir); |
193 | if (mount(private_run_dir, private_dir, NULL, MS_BIND|MS_REC, NULL) < 0) | 204 | if (mount(private_run_dir, private_dir, NULL, MS_BIND|MS_REC, NULL) < 0) |