aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar netblue30 <netblue30@yahoo.com>2016-04-15 15:34:19 -0400
committerLibravatar netblue30 <netblue30@yahoo.com>2016-04-15 15:34:19 -0400
commit3ee0df541e284074662c7c916951fb37aac4abef (patch)
treeb176830d33d229d83426314b639d55d72874ac68
parentmerged 0ad profile from Fred-Barclay (diff)
downloadfirejail-3ee0df541e284074662c7c916951fb37aac4abef.tar.gz
firejail-3ee0df541e284074662c7c916951fb37aac4abef.tar.zst
firejail-3ee0df541e284074662c7c916951fb37aac4abef.zip
x11 fixes
-rw-r--r--src/firejail/x11.c6
-rwxr-xr-xtest/icedove-x11.exp82
-rwxr-xr-xtest/test-apps-x11.sh20
-rwxr-xr-xtest/xterm-x11.exp82
4 files changed, 186 insertions, 4 deletions
diff --git a/src/firejail/x11.c b/src/firejail/x11.c
index ef1095a49..985ca9337 100644
--- a/src/firejail/x11.c
+++ b/src/firejail/x11.c
@@ -170,7 +170,7 @@ void x11_start_xephyr(int argc, char **argv) {
170 170
171 // unfortunately, xephyr does a number of weird things when started by root user!!! 171 // unfortunately, xephyr does a number of weird things when started by root user!!!
172 if (getuid() == 0) { 172 if (getuid() == 0) {
173 fprintf(stderr, "Error: this feature is not available when running as root\n"); 173 fprintf(stderr, "Error: X11 sandboxing is not available when running as root\n");
174 exit(1); 174 exit(1);
175 } 175 }
176 176
@@ -292,7 +292,7 @@ void x11_start_xpra(int argc, char **argv) {
292 292
293 // unfortunately, xpra does a number of weird things when started by root user!!! 293 // unfortunately, xpra does a number of weird things when started by root user!!!
294 if (getuid() == 0) { 294 if (getuid() == 0) {
295 fprintf(stderr, "Error: this feature is not available when running as root\n"); 295 fprintf(stderr, "Error: X11 sandboxing is not available when running as root\n");
296 exit(1); 296 exit(1);
297 } 297 }
298 298
@@ -410,7 +410,7 @@ void x11_start(int argc, char **argv) {
410 410
411 // unfortunately, xpra does a number of weird things when started by root user!!! 411 // unfortunately, xpra does a number of weird things when started by root user!!!
412 if (getuid() == 0) { 412 if (getuid() == 0) {
413 fprintf(stderr, "Error: this feature is not available when running as root\n"); 413 fprintf(stderr, "Error: X11 sandboxing is not available when running as root\n");
414 exit(1); 414 exit(1);
415 } 415 }
416 416
diff --git a/test/icedove-x11.exp b/test/icedove-x11.exp
new file mode 100755
index 000000000..6f8eee90d
--- /dev/null
+++ b/test/icedove-x11.exp
@@ -0,0 +1,82 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "firejail --name=test --net=br0 --x11 icedove\r"
8sleep 10
9
10spawn $env(SHELL)
11send -- "firejail --list\r"
12expect {
13 timeout {puts "TESTING ERROR 3\n";exit}
14 ":firejail"
15}
16expect {
17 timeout {puts "TESTING ERROR 3.1\n";exit}
18 "icedove"
19}
20sleep 1
21
22# grsecurity exit
23send -- "file /proc/sys/kernel/grsecurity\r"
24expect {
25 timeout {puts "TESTING ERROR - grsecurity detection\n";exit}
26 "grsecurity: directory" {puts "grsecurity present, exiting...\n";exit}
27 "cannot open" {puts "grsecurity not present\n"}
28}
29
30send -- "firejail --name=blablabla\r"
31expect {
32 timeout {puts "TESTING ERROR 4\n";exit}
33 "Child process initialized"
34}
35sleep 2
36
37spawn $env(SHELL)
38send -- "firemon --seccomp\r"
39expect {
40 timeout {puts "TESTING ERROR 5\n";exit}
41 ":firejail"
42}
43expect {
44 timeout {puts "TESTING ERROR 5.0\n";exit}
45 "icedove"
46}
47expect {
48 timeout {puts "TESTING ERROR 5.1 (seccomp)\n";exit}
49 "Seccomp: 2"
50}
51expect {
52 timeout {puts "TESTING ERROR 5.1\n";exit}
53 "name=blablabla"
54}
55sleep 2
56send -- "firemon --caps\r"
57expect {
58 timeout {puts "TESTING ERROR 6\n";exit}
59 ":firejail"
60}
61expect {
62 timeout {puts "TESTING ERROR 6.0\n";exit}
63 "icedove"
64}
65expect {
66 timeout {puts "TESTING ERROR 6.1\n";exit}
67 "CapBnd"
68}
69expect {
70 timeout {puts "TESTING ERROR 6.2\n";exit}
71 "0000000000000000"
72}
73expect {
74 timeout {puts "TESTING ERROR 6.3\n";exit}
75 "name=blablabla"
76}
77sleep 1
78send -- "firejail --shutdown=test\r"
79sleep 3
80
81puts "\nall done\n"
82
diff --git a/test/test-apps-x11.sh b/test/test-apps-x11.sh
index 6521fa2b0..93d984501 100755
--- a/test/test-apps-x11.sh
+++ b/test/test-apps-x11.sh
@@ -1,5 +1,14 @@
1#!/bin/bash 1#!/bin/bash
2 2
3which xterm
4if [ "$?" -eq 0 ];
5then
6 echo "TESTING: xterm x11"
7 ./xterm-x11.exp
8else
9 echo "TESTING: xterm not found"
10fi
11
3which firefox 12which firefox
4if [ "$?" -eq 0 ]; 13if [ "$?" -eq 0 ];
5then 14then
@@ -22,8 +31,17 @@ which transmission-gtk
22if [ "$?" -eq 0 ]; 31if [ "$?" -eq 0 ];
23then 32then
24 echo "TESTING: transmission-gtk x11" 33 echo "TESTING: transmission-gtk x11"
25 ./transmission-gtk.exp 34 ./transmission-gtk-x11.exp
26else 35else
27 echo "TESTING: transmission-gtk not found" 36 echo "TESTING: transmission-gtk not found"
28fi 37fi
29 38
39which icedove
40if [ "$?" -eq 0 ];
41then
42 echo "TESTING: icedove x11"
43 ./icedove-x11.exp
44else
45 echo "TESTING: chromium not found"
46fi
47
diff --git a/test/xterm-x11.exp b/test/xterm-x11.exp
new file mode 100755
index 000000000..592f77659
--- /dev/null
+++ b/test/xterm-x11.exp
@@ -0,0 +1,82 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "firejail --name=test --net=br0 --x11 xterm\r"
8sleep 10
9
10spawn $env(SHELL)
11send -- "firejail --list\r"
12expect {
13 timeout {puts "TESTING ERROR 3\n";exit}
14 ":firejail"
15}
16expect {
17 timeout {puts "TESTING ERROR 3.1\n";exit}
18 "xterm"
19}
20sleep 1
21
22# grsecurity exit
23send -- "file /proc/sys/kernel/grsecurity\r"
24expect {
25 timeout {puts "TESTING ERROR - grsecurity detection\n";exit}
26 "grsecurity: directory" {puts "grsecurity present, exiting...\n";exit}
27 "cannot open" {puts "grsecurity not present\n"}
28}
29
30send -- "firejail --name=blablabla\r"
31expect {
32 timeout {puts "TESTING ERROR 4\n";exit}
33 "Child process initialized"
34}
35sleep 2
36
37spawn $env(SHELL)
38send -- "firemon --seccomp\r"
39expect {
40 timeout {puts "TESTING ERROR 5\n";exit}
41 ":firejail"
42}
43expect {
44 timeout {puts "TESTING ERROR 5.0\n";exit}
45 "xterm"
46}
47expect {
48 timeout {puts "TESTING ERROR 5.1 (seccomp)\n";exit}
49 "Seccomp: 2"
50}
51expect {
52 timeout {puts "TESTING ERROR 5.1\n";exit}
53 "name=blablabla"
54}
55sleep 1
56send -- "firemon --caps\r"
57expect {
58 timeout {puts "TESTING ERROR 6\n";exit}
59 ":firejail"
60}
61expect {
62 timeout {puts "TESTING ERROR 6.0\n";exit}
63 "xterm"
64}
65expect {
66 timeout {puts "TESTING ERROR 6.1\n";exit}
67 "CapBnd"
68}
69expect {
70 timeout {puts "TESTING ERROR 6.2\n";exit}
71 "0000000000000000"
72}
73expect {
74 timeout {puts "TESTING ERROR 6.3\n";exit}
75 "name=blablabla"
76}
77sleep 1
78send -- "firejail --shutdown=test\r"
79sleep 3
80
81puts "\nall done\n"
82