6969 # Verify rc.d script is distributed
7070 test -f scripts/sniproxy.rc
7171
72- # Smoke test: start sniproxy briefly with a test config
72+ # Smoke test: start sniproxy with a test config
73+ echo "Running as: $(whoami) (uid=$(id -u))"
7374 printf '%s\n' \
74- 'user daemon ' \
75+ 'user nobody ' \
7576 'error_log { syslog daemon }' \
7677 'listener 127.0.0.1:18443 {' \
7778 ' protocol tls' \
@@ -82,38 +83,44 @@ jobs:
8283 '}' > /tmp/sniproxy-test.conf
8384 chmod 600 /tmp/sniproxy-test.conf
8485
85- timeout 3 src/sniproxy -f -c /tmp/sniproxy-test.conf || test $? -eq 124
86+ # Test config parsing
87+ src/sniproxy -t -c /tmp/sniproxy-test.conf
8688
87- # Verify Capsicum is active: start as daemon and check
89+ # Start as daemon and verify Capsicum
8890 src/sniproxy -c /tmp/sniproxy-test.conf
89- sleep 1
91+ sleep 2
92+
93+ ps aux | grep sniproxy | grep -v grep
9094
9195 # Check process flags for capability mode (0x100 bit)
96+ set +e
9297 mainpid=$(ps ax -o pid,flags,args | grep 'sniproxy-mainloop' | grep -v grep | awk '{print $1}')
9398 binderpid=$(ps ax -o pid,flags,args | grep 'sniproxy-binder' | grep -v grep | awk '{print $1}')
94- if [ -n "$mainpid" ]; then
95- mainflags=$(ps -o flags= -p "$mainpid" | tr -d ' ')
96- binderflags=$(ps -o flags= -p "$binderpid" | tr -d ' ')
97- echo "mainloop flags=$mainflags binder flags=$binderflags"
98-
99- # Mainloop must be in capability mode (flag 0x100 set)
100- if [ $(( 0x$mainflags & 0x100 )) -eq 0 ]; then
101- echo "::error::Main process is NOT in Capsicum capability mode"
102- pkill sniproxy || true
103- exit 1
104- fi
105-
106- # Binder must NOT be in capability mode
107- if [ $(( 0x$binderflags & 0x100 )) -ne 0 ]; then
108- echo "::error::Binder process should NOT be in capability mode"
109- pkill sniproxy || true
110- exit 1
111- fi
112-
113- echo "Capsicum verified: mainloop in cap mode, binder not"
114- else
99+
100+ if [ -z "$mainpid" ]; then
115101 echo "::error::sniproxy-mainloop process not found"
116102 pkill sniproxy || true
117103 exit 1
118104 fi
105+
106+ mainflags=$(ps -o flags= -p "$mainpid" | tr -d ' ')
107+ binderflags=$(ps -o flags= -p "$binderpid" | tr -d ' ')
108+ echo "mainloop pid=$mainpid flags=$mainflags"
109+ echo "binder pid=$binderpid flags=$binderflags"
110+
111+ # Mainloop must be in capability mode (flag 0x100 set)
112+ if [ $(( 0x$mainflags & 0x100 )) -eq 0 ]; then
113+ echo "::error::Main process is NOT in Capsicum capability mode"
114+ pkill sniproxy || true
115+ exit 1
116+ fi
117+
118+ # Binder must NOT be in capability mode
119+ if [ $(( 0x$binderflags & 0x100 )) -ne 0 ]; then
120+ echo "::error::Binder process should NOT be in capability mode"
121+ pkill sniproxy || true
122+ exit 1
123+ fi
124+
125+ echo "Capsicum verified: mainloop in cap mode, binder not"
119126 pkill sniproxy || true
0 commit comments