aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar ಚಿರಾಗ್ ನಟರಾಜ್ <chiraag.nataraj@gmail.com>2018-07-23 17:59:16 -0400
committerLibravatar ಚಿರಾಗ್ ನಟರಾಜ್ <chiraag.nataraj@gmail.com>2018-07-23 17:59:16 -0400
commitc42e4225641e8f4108b79c3c98d4b43e5267774e (patch)
tree91c1ae395c1bc29f3eb7d8eacb9f21a20d8b4b62 /src
parentMerge pull request #2058 from ltworf/patch-2 (diff)
downloadfirejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.tar.gz
firejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.tar.zst
firejail-c42e4225641e8f4108b79c3c98d4b43e5267774e.zip
Fix #1638
Diffstat (limited to 'src')
-rw-r--r--src/firejail/fs_whitelist.c54
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