nx_aw_hostctl_gate.nx source
↩ module page · 24 lines · 1324 B
1import "_hdl_build/nx_aw_hostctl.nx"
2import "nx_gate_verdict.nx"
3func main()->i64 {
4 let c:*i64=gv_ctr()
5 let a:*i64=sys_mmap(32) as *i64
6 a[0]="nx_aw_hostctl" as *u8 as i64; a[1]="nftread" as *u8 as i64
7 gv_check_eq("read-only no-argument request",ah_request_valid(2,a),1,c)
8 a[2]="status" as *u8 as i64
9 gv_check_eq("nftread refuses extra argument",ah_request_valid(3,a),0,c)
10 a[1]="restart" as *u8 as i64; a[2]="known_service-1" as *u8 as i64
11 gv_check_eq("literal service preserved",ah_request_valid(3,a),1,c)
12 gv_check_eq("extra argv refused",ah_request_valid(4,a),0,c)
13 gv_check_eq("space refused",ah_literal_argument("a b" as *u8),0,c)
14 gv_check_eq("separator refused",ah_literal_argument("a;b" as *u8),0,c)
15 gv_check_eq("substitution refused",ah_literal_argument("$(id)" as *u8),0,c)
16 gv_check_eq("backtick refused",ah_literal_argument("`id`" as *u8),0,c)
17 gv_check_eq("newline refused",ah_literal_argument("a\nb" as *u8),0,c)
18 gv_check_eq("redirect refused",ah_literal_argument("a>b" as *u8),0,c)
19 gv_check_eq("empty refused",ah_literal_argument("" as *u8),0,c)
20 a[1]="arbitrary" as *u8 as i64
21 gv_check_eq("unknown operation refused",ah_request_valid(2,a),0,c)
22 let rc:i64=gv_verdict("HOSTCTL-ARGUMENT" as *u8,c,"pure boundary checks; no credentials, SSH or network-rule changes" as *u8)
23 sys_exit(rc);return rc
24}