diff options
author | ಚಿರಾಗ್ ನಟರಾಜ್ <chiraag.nataraj@gmail.com> | 2018-07-23 17:59:16 -0400 |
---|---|---|
committer | ಚಿರಾಗ್ ನಟರಾಜ್ <chiraag.nataraj@gmail.com> | 2018-07-23 17:59:16 -0400 |
commit | c42e4225641e8f4108b79c3c98d4b43e5267774e (patch) | |
tree | 91c1ae395c1bc29f3eb7d8eacb9f21a20d8b4b62 | |
parent | Merge pull request #2058 from ltworf/patch-2 (diff) | |
download | firejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.tar.gz firejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.tar.zst firejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.zip |
Fix #1638
-rw-r--r-- | src/firejail/fs_whitelist.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/src/firejail/fs_whitelist.c b/src/firejail/fs_whitelist.c index e177c3ec0..cddfaa017 100644 --- a/src/firejail/fs_whitelist.c +++ b/src/firejail/fs_whitelist.c | |||
@@ -47,33 +47,7 @@ static char *resolve_downloads(int nowhitelist_flag) { | |||
47 | char *fname; | 47 | char *fname; |
48 | struct stat s; | 48 | struct stat s; |
49 | 49 | ||
50 | // try a well known download directory name | 50 | // try a name from ~/.config/user-dirs.dirs |
51 | int i = 0; | ||
52 | while (dentry[i] != NULL) { | ||
53 | if (asprintf(&fname, "%s/%s", cfg.homedir, dentry[i]) == -1) | ||
54 | errExit("asprintf"); | ||
55 | |||
56 | if (stat(fname, &s) == 0) { | ||
57 | if (arg_debug || arg_debug_whitelists) | ||
58 | printf("Downloads directory resolved as \"%s\"\n", fname); | ||
59 | |||
60 | char *rv; | ||
61 | if (nowhitelist_flag) { | ||
62 | if (asprintf(&rv, "nowhitelist ~/%s", dentry[i]) == -1) | ||
63 | errExit("asprintf"); | ||
64 | } | ||
65 | else { | ||
66 | if (asprintf(&rv, "whitelist ~/%s", dentry[i]) == -1) | ||
67 | errExit("asprintf"); | ||
68 | } | ||
69 | free(fname); | ||
70 | return rv; | ||
71 | } | ||
72 | free(fname); | ||
73 | i++; | ||
74 | } | ||
75 | |||
76 | // try a name form ~/.config/user-dirs.dirs | ||
77 | if (asprintf(&fname, "%s/.config/user-dirs.dirs", cfg.homedir) == -1) | 51 | if (asprintf(&fname, "%s/.config/user-dirs.dirs", cfg.homedir) == -1) |
78 | errExit("asprintf"); | 52 | errExit("asprintf"); |
79 | FILE *fp = fopen(fname, "r"); | 53 | FILE *fp = fopen(fname, "r"); |
@@ -131,6 +105,32 @@ static char *resolve_downloads(int nowhitelist_flag) { | |||
131 | } | 105 | } |
132 | } | 106 | } |
133 | 107 | ||
108 | // try a well known download directory name | ||
109 | int i = 0; | ||
110 | while (dentry[i] != NULL) { | ||
111 | if (asprintf(&fname, "%s/%s", cfg.homedir, dentry[i]) == -1) | ||
112 | errExit("asprintf"); | ||
113 | |||
114 | if (stat(fname, &s) == 0) { | ||
115 | if (arg_debug || arg_debug_whitelists) | ||
116 | printf("Downloads directory resolved as \"%s\"\n", fname); | ||
117 | |||
118 | char *rv; | ||
119 | if (nowhitelist_flag) { | ||
120 | if (asprintf(&rv, "nowhitelist ~/%s", dentry[i]) == -1) | ||
121 | errExit("asprintf"); | ||
122 | } | ||
123 | else { | ||
124 | if (asprintf(&rv, "whitelist ~/%s", dentry[i]) == -1) | ||
125 | errExit("asprintf"); | ||
126 | } | ||
127 | free(fname); | ||
128 | return rv; | ||
129 | } | ||
130 | free(fname); | ||
131 | i++; | ||
132 | } | ||
133 | |||
134 | fclose(fp); | 134 | fclose(fp); |
135 | return NULL; | 135 | return NULL; |
136 | 136 | ||