@@ -76,10 +76,6 @@ static void list(void) {
76
76
exit (1 );
77
77
}
78
78
79
- char * firejail_exec ;
80
- if (asprintf (& firejail_exec , "%s/bin/firejail" , PREFIX ) == -1 )
81
- errExit ("asprintf" );
82
-
83
79
struct dirent * entry ;
84
80
while ((entry = readdir (dir )) != NULL ) {
85
81
if (strcmp (entry -> d_name , "." ) == 0 || strcmp (entry -> d_name , ".." ) == 0 )
@@ -92,7 +88,7 @@ static void list(void) {
92
88
if (is_link (fullname )) {
93
89
char * fname = realpath (fullname , NULL );
94
90
if (fname ) {
95
- if (strcmp (fname , firejail_exec ) == 0 )
91
+ if (strcmp (fname , FIREJAIL_EXEC ) == 0 )
96
92
printf ("%s\n" , fullname );
97
93
free (fname );
98
94
}
@@ -101,7 +97,6 @@ static void list(void) {
101
97
}
102
98
103
99
closedir (dir );
104
- free (firejail_exec );
105
100
}
106
101
107
102
static void clean (void ) {
@@ -114,10 +109,6 @@ static void clean(void) {
114
109
exit (1 );
115
110
}
116
111
117
- char * firejail_exec ;
118
- if (asprintf (& firejail_exec , "%s/bin/firejail" , PREFIX ) == -1 )
119
- errExit ("asprintf" );
120
-
121
112
struct dirent * entry ;
122
113
while ((entry = readdir (dir )) != NULL ) {
123
114
if (strcmp (entry -> d_name , "." ) == 0 || strcmp (entry -> d_name , ".." ) == 0 )
@@ -130,7 +121,7 @@ static void clean(void) {
130
121
if (is_link (fullname )) {
131
122
char * fname = realpath (fullname , NULL );
132
123
if (fname ) {
133
- if (strcmp (fname , firejail_exec ) == 0 ) {
124
+ if (strcmp (fname , FIREJAIL_EXEC ) == 0 ) {
134
125
char * ptr = strrchr (fullname , '/' );
135
126
assert (ptr );
136
127
ptr ++ ;
@@ -147,7 +138,6 @@ static void clean(void) {
147
138
}
148
139
149
140
closedir (dir );
150
- free (firejail_exec );
151
141
printf ("\n" );
152
142
}
153
143
@@ -175,24 +165,16 @@ static void set_file(const char *name, const char *firejail_exec) {
175
165
free (fname );
176
166
}
177
167
178
- // parse /etc/firejail/firecfg.config file
179
- static void set_links_firecfg (void ) {
180
- char * cfgfile ;
181
- if (asprintf (& cfgfile , "%s/firecfg.config" , SYSCONFDIR ) == -1 )
182
- errExit ("asprintf" );
183
-
184
- char * firejail_exec ;
185
- if (asprintf (& firejail_exec , "%s/bin/firejail" , PREFIX ) == -1 )
186
- errExit ("asprintf" );
168
+ // parse a single config file
169
+ static void set_links_firecfg (const char * cfgfile ) {
170
+ printf ("Configuring symlinks in %s based on %s\n" , arg_bindir , cfgfile );
187
171
188
- // parse /etc/firejail/firecfg.config file
189
172
FILE * fp = fopen (cfgfile , "r" );
190
173
if (!fp ) {
191
174
perror ("fopen" );
192
175
fprintf (stderr , "Error: cannot open %s\n" , cfgfile );
193
176
exit (1 );
194
177
}
195
- printf ("Configuring symlinks in %s based on firecfg.config\n" , arg_bindir );
196
178
197
179
char buf [MAX_BUF ];
198
180
int lineno = 0 ;
@@ -223,12 +205,10 @@ static void set_links_firecfg(void) {
223
205
continue ;
224
206
225
207
// set link
226
- set_file (start , firejail_exec );
208
+ set_file (start , FIREJAIL_EXEC );
227
209
}
228
210
229
211
fclose (fp );
230
- free (cfgfile );
231
- free (firejail_exec );
232
212
}
233
213
234
214
// parse ~/.config/firejail/ directory
@@ -245,10 +225,6 @@ static void set_links_homedir(const char *homedir) {
245
225
return ;
246
226
}
247
227
248
- char * firejail_exec ;
249
- if (asprintf (& firejail_exec , "%s/bin/firejail" , PREFIX ) == -1 )
250
- errExit ("asprintf" );
251
-
252
228
// parse ~/.config/firejail/ directory
253
229
printf ("\nConfiguring symlinks in %s based on local firejail config directory\n" , arg_bindir );
254
230
@@ -280,12 +256,10 @@ static void set_links_homedir(const char *homedir) {
280
256
}
281
257
282
258
* ptr = '\0' ;
283
- set_file (exec , firejail_exec );
259
+ set_file (exec , FIREJAIL_EXEC );
284
260
free (exec );
285
261
}
286
262
closedir (dir );
287
-
288
- free (firejail_exec );
289
263
}
290
264
291
265
static const char * get_sudo_user (void ) {
@@ -449,15 +423,17 @@ int main(int argc, char **argv) {
449
423
}
450
424
451
425
if (arg_guide ) {
426
+ const char * zenity_exec ;
427
+ if (arg_debug )
428
+ zenity_exec = FZENITY_EXEC ;
429
+ else
430
+ zenity_exec = ZENITY_EXEC ;
431
+
452
432
char * cmd ;
453
- if (arg_debug ) {
454
- if ( asprintf ( & cmd , "sudo %s/firejail/firejail-welcome.sh /usr/lib/firejail/fzenity %s %s" , LIBDIR , SYSCONFDIR , user ) == -1 )
433
+ if (asprintf ( & cmd , "sudo %s %s %s %s" ,
434
+ FIREJAIL_WELCOME_SH , zenity_exec , SYSCONFDIR , user ) == -1 )
455
435
errExit ("asprintf" );
456
- }
457
- else {
458
- if (asprintf (& cmd , "sudo %s/firejail/firejail-welcome.sh /usr/bin/zenity %s %s" , LIBDIR , SYSCONFDIR , user ) == -1 )
459
- errExit ("asprintf" );
460
- }
436
+
461
437
int status = system (cmd );
462
438
if (status == -1 ) {
463
439
fprintf (stderr , "Error: cannot run firejail-welcome.sh\n" );
@@ -474,8 +450,8 @@ else {
474
450
// clear all symlinks
475
451
clean ();
476
452
477
- // set new symlinks based on /etc/firejail/ firecfg.config
478
- set_links_firecfg ();
453
+ // set new symlinks based on firecfg.config
454
+ set_links_firecfg (FIRECFG_CFGFILE );
479
455
480
456
if (getuid () == 0 ) {
481
457
// add user to firejail access database - only for root
0 commit comments