aboutsummaryrefslogtreecommitdiffstats
path: root/src/firecfg/main.c
diff options
context:
space:
mode:
authorLibravatar netblue30 <netblue30@yahoo.com>2016-03-25 10:43:53 -0400
committerLibravatar netblue30 <netblue30@yahoo.com>2016-03-25 10:43:53 -0400
commit6ca44b90841224e740d464ea1b8107cae6f63d31 (patch)
tree8c58a69e49596b286d7baac0222d3eb5c464227a /src/firecfg/main.c
parentadded firecfg utility (diff)
downloadfirejail-6ca44b90841224e740d464ea1b8107cae6f63d31.tar.gz
firejail-6ca44b90841224e740d464ea1b8107cae6f63d31.tar.zst
firejail-6ca44b90841224e740d464ea1b8107cae6f63d31.zip
firecfg utility
Diffstat (limited to 'src/firecfg/main.c')
-rw-r--r--src/firecfg/main.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/firecfg/main.c b/src/firecfg/main.c
index 7465f2d3e..0c6b278b5 100644
--- a/src/firecfg/main.c
+++ b/src/firecfg/main.c
@@ -30,7 +30,7 @@ static void usage(void) {
30 printf("Firecfg is the desktop configuration utility for Firejail software. The utility\n"); 30 printf("Firecfg is the desktop configuration utility for Firejail software. The utility\n");
31 printf("creates several symbolic links to firejail executable. This allows the user to\n"); 31 printf("creates several symbolic links to firejail executable. This allows the user to\n");
32 printf("sandbox applications automatically, just by clicking on a regular desktop\n"); 32 printf("sandbox applications automatically, just by clicking on a regular desktop\n");
33 printf("menues and icons.\n\n"); 33 printf("menus and icons.\n\n");
34 printf("The symbolic links are placed in /usr/local/bin. For more information, see\n"); 34 printf("The symbolic links are placed in /usr/local/bin. For more information, see\n");
35 printf("DESKTOP INTEGRATION section in man 1 firejail.\n\n"); 35 printf("DESKTOP INTEGRATION section in man 1 firejail.\n\n");
36 printf("Usage: firecfg [OPTIONS]\n\n"); 36 printf("Usage: firecfg [OPTIONS]\n\n");
@@ -245,21 +245,33 @@ static void set(void) {
245 lineno++; 245 lineno++;
246 if (*buf == '#') // comments 246 if (*buf == '#') // comments
247 continue; 247 continue;
248
249 // do not accept .. and/or / in file name
250 if (strstr(buf, "..") || strchr(buf, '/')) {
251 fprintf(stderr, "Error: invalid line %d in %s\n", lineno, cfgfile);
252 exit(1);
253 }
248 254
249 // remove \n 255 // remove \n
250 char *ptr = strchr(buf, '\n'); 256 char *ptr = strchr(buf, '\n');
251 if (ptr) 257 if (ptr)
252 *ptr = '\0'; 258 *ptr = '\0';
259
260 // trim spaces
261 ptr = buf;
262 while (*ptr == ' ' || *ptr == '\t')
263 ptr++;
264 char *start = ptr;
253 265
254 // do not accept .. and/or / in file name 266 // empty line
255 if (strstr(buf, "..") || strchr(buf, '/')) { 267 if (*start == '\0')
256 fprintf(stderr, "Error: invalid line %d in %s\n", lineno, cfgfile); 268 continue;
257 exit(1);
258 }
259 269
260 set_file(buf, firejail_exec); 270 // set link
271 set_file(start, firejail_exec);
261 } 272 }
262 273
274 fclose(fp);
263 free(cfgfile); 275 free(cfgfile);
264 free(firejail_exec); 276 free(firejail_exec);
265} 277}