Skip to content

Commit 6d11750

Browse files
committed
Fix FreeBSD CI: use nobody user, improve smoke test error reporting
1 parent e9deeae commit 6d11750

File tree

1 file changed

+33
-26
lines changed

1 file changed

+33
-26
lines changed

.github/workflows/freebsd.yml

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@ jobs:
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

Comments
 (0)