aboutsummaryrefslogtreecommitdiffstats
path: root/src/firecfg
diff options
context:
space:
mode:
authorLibravatar startx2017 <vradu.startx@yandex.com>2018-09-04 08:28:14 -0400
committerLibravatar startx2017 <vradu.startx@yandex.com>2018-09-04 08:28:14 -0400
commite8989dc95bc55644661ded3c2b68212e296d19bd (patch)
tree7ecdf9603d4bd354902db65d8bd7ca944f993447 /src/firecfg
parentmainline merges (diff)
downloadfirejail-e8989dc95bc55644661ded3c2b68212e296d19bd.tar.gz
firejail-e8989dc95bc55644661ded3c2b68212e296d19bd.tar.zst
firejail-e8989dc95bc55644661ded3c2b68212e296d19bd.zip
mainline merge
Diffstat (limited to 'src/firecfg')
-rw-r--r--src/firecfg/desktop_files.c12
-rw-r--r--src/firecfg/firecfg.config4
-rw-r--r--src/firecfg/main.c5
3 files changed, 18 insertions, 3 deletions
diff --git a/src/firecfg/desktop_files.c b/src/firecfg/desktop_files.c
index 71b39390e..f09a23977 100644
--- a/src/firecfg/desktop_files.c
+++ b/src/firecfg/desktop_files.c
@@ -144,6 +144,8 @@ void fix_desktop_files(char *homedir) {
144 perror("opendir"); 144 perror("opendir");
145 fprintf(stderr, "Warning: cannot access /usr/share/applications directory, desktop files fixing skipped...\n"); 145 fprintf(stderr, "Warning: cannot access /usr/share/applications directory, desktop files fixing skipped...\n");
146 free(user_apps_dir); 146 free(user_apps_dir);
147 if (dir)
148 closedir(dir);
147 return; 149 return;
148 } 150 }
149 151
@@ -182,7 +184,9 @@ void fix_desktop_files(char *homedir) {
182 } 184 }
183 185
184 fseek(fp, 0, SEEK_END); 186 fseek(fp, 0, SEEK_END);
185 size_t size = ftell(fp); 187 long size = ftell(fp);
188 if (size == -1)
189 errExit("ftell");
186 fseek(fp, 0, SEEK_SET); 190 fseek(fp, 0, SEEK_SET);
187 char *buf = malloc(size + 1); 191 char *buf = malloc(size + 1);
188 if (!buf) 192 if (!buf)
@@ -266,12 +270,16 @@ void fix_desktop_files(char *homedir) {
266 270
267 if (stat(outname, &sb) == 0) { 271 if (stat(outname, &sb) == 0) {
268 printf(" %s skipped: file exists\n", filename); 272 printf(" %s skipped: file exists\n", filename);
273 if (change_exec)
274 free(change_exec);
269 continue; 275 continue;
270 } 276 }
271 277
272 FILE *fpin = fopen(filename, "r"); 278 FILE *fpin = fopen(filename, "r");
273 if (!fpin) { 279 if (!fpin) {
274 fprintf(stderr, "Warning: cannot open /usr/share/applications/%s\n", filename); 280 fprintf(stderr, "Warning: cannot open /usr/share/applications/%s\n", filename);
281 if (change_exec)
282 free(change_exec);
275 continue; 283 continue;
276 } 284 }
277 285
@@ -279,6 +287,8 @@ void fix_desktop_files(char *homedir) {
279 if (!fpout) { 287 if (!fpout) {
280 fprintf(stderr, "Warning: cannot open ~/.local/share/applications/%s\n", outname); 288 fprintf(stderr, "Warning: cannot open ~/.local/share/applications/%s\n", outname);
281 fclose(fpin); 289 fclose(fpin);
290 if (change_exec)
291 free(change_exec);
282 continue; 292 continue;
283 } 293 }
284 fprintf(fpout, "# converted by firecfg\n"); 294 fprintf(fpout, "# converted by firecfg\n");
diff --git a/src/firecfg/firecfg.config b/src/firecfg/firecfg.config
index 0bbafb343..676c2d90a 100644
--- a/src/firecfg/firecfg.config
+++ b/src/firecfg/firecfg.config
@@ -10,6 +10,7 @@ Discord
10DiscordCanary 10DiscordCanary
11FossaMail 11FossaMail
12Fritzing 12Fritzing
13JDownloader
13Mathematica 14Mathematica
14Natron 15Natron
15Telegram 16Telegram
@@ -94,6 +95,7 @@ deadbeef
94deluge 95deluge
95dex2jar 96dex2jar
96dia 97dia
98dig
97digikam 99digikam
98dillo 100dillo
99dino 101dino
@@ -217,6 +219,7 @@ inox
217iridium 219iridium
218iridium-browser 220iridium-browser
219jd-gui 221jd-gui
222jdownloader
220jitsi 223jitsi
221k3b 224k3b
222kaffeine 225kaffeine
@@ -442,6 +445,7 @@ weechat
442weechat-curses 445weechat-curses
443wesnoth 446wesnoth
444wget 447wget
448whois
445wine 449wine
446wire-desktop 450wire-desktop
447wireshark 451wireshark
diff --git a/src/firecfg/main.c b/src/firecfg/main.c
index 298314d4f..810af6ff2 100644
--- a/src/firecfg/main.c
+++ b/src/firecfg/main.c
@@ -318,13 +318,14 @@ int main(int argc, char **argv) {
318 318
319 // user setup 319 // user setup
320 char *user = get_user(); 320 char *user = get_user();
321 assert(user);
321 uid_t uid; 322 uid_t uid;
322 gid_t gid; 323 gid_t gid;
323 char *home = get_homedir(user, &uid, &gid); 324 char *home = get_homedir(user, &uid, &gid);
324 325
325 326
326 // check for --bindir 327 // check for --bindir
327 for (i = i; i < argc; i++) { 328 for (i = 1; i < argc; i++) {
328 if (strncmp(argv[i], "--bindir=", 9) == 0) { 329 if (strncmp(argv[i], "--bindir=", 9) == 0) {
329 if (strncmp(argv[i] + 9, "~/", 2) == 0) { 330 if (strncmp(argv[i] + 9, "~/", 2) == 0) {
330 if (asprintf(&arg_bindir, "%s/%s", home, argv[i] + 11) == -1) 331 if (asprintf(&arg_bindir, "%s/%s", home, argv[i] + 11) == -1)
@@ -430,7 +431,7 @@ int main(int argc, char **argv) {
430 set_links_firecfg(); 431 set_links_firecfg();
431 432
432 // add user to firejail access database - only for root 433 // add user to firejail access database - only for root
433 if (user && getuid() == 0) { 434 if (getuid() == 0) {
434 printf("\nAdding user %s to Firejail access database in %s/firejail.users\n", user, SYSCONFDIR); 435 printf("\nAdding user %s to Firejail access database in %s/firejail.users\n", user, SYSCONFDIR);
435 firejail_user_add(user); 436 firejail_user_add(user);
436 } 437 }