code wiki / _hdl_build / nx_routeguard_adversarial_gate_t184.nx
nx_routeguard_adversarial_gate_t184.nx source
↩ module page · 35 lines · 2741 B
1import "nx_routeguard_lib.nx"
2import "nx_gate_verdict.nx"
3func rga_len(s:*u8)->i64{var n:i64=0;while s[n]!=(0 as u8){n=n+1};return n}
4func rga_count(s:*u8)->i64{
5 let names:*u8=sys_mmap(RG_MAXR*RG_NAMEMAX);let lens:*i64=sys_mmap(RG_MAXR*8) as *i64;let tr:*i64=sys_mmap(16) as *i64
6 return rg_extract(s,rga_len(s),names,lens,tr)
7}
8func main()->i64{
9 let c:*i64=gv_ctr();gv_head("Route evidence punctuation regression")
10 gv_check("quoted base plus prose sentence deduped",rga_count("\"/api/cap/status\" Check /api/cap/status. ")==1,c)
11 gv_check("quoted dotted route retained",rga_count("\"/api/cap/status\" \"/api/cap/status.\"")==2,c)
12 gv_check("prose dotted route without base remains ambiguous",rga_count("Check /api/cap/status. ")==1,c)
13 gv_check("prose dotted route with only prose base retained",rga_count("Check /api/cap/status then /api/cap/status. ")==2,c)
14 gv_check("internal extension dot retained",rga_count("\"/api/file\" Check /api/file.json ")==2,c)
15 gv_check("longer route does not establish base",rga_count("\"/api/cap/statusmore\" Check /api/cap/status. ")==2,c)
16 gv_check("question punctuation remains ambiguous",rga_count("\"/api/cap/status\" Check /api/cap/status.?")==2,c)
17 let nb:*u8=sys_mmap(128);let ns:*u8="/api/cap/status";let nn:i64=rga_len(ns)
18 var j:i64=0;while j<nn{nb[j]=ns[j];j=j+1};nb[nn]=0
19 let tail:*u8=" Check /api/cap/status. ";j=0;while tail[j]!=(0 as u8){nb[nn+1+j]=tail[j];j=j+1}
20 let names:*u8=sys_mmap(RG_MAXR*RG_NAMEMAX);let lens:*i64=sys_mmap(RG_MAXR*8) as *i64;let tr:*i64=sys_mmap(16) as *i64;let miss:*i64=sys_mmap(RG_MAXR*8) as *i64
21 gv_check("NUL delimited binary base resolves prose alias",rg_extract(nb,nn+1+j,names,lens,tr)==1,c)
22 let live:*u8="\"/api/cap/status\" \"/api/cap/status.\""
23 let lc:i64=rg_extract(live,rga_len(live),names,lens,tr)
24 let bad:*u8="\"/api/cap/status\""
25 gv_check("genuine dotted route removal rejected",rg_missing(names,lens,lc,bad,rga_len(bad),miss,RG_MAXR)==1,c)
26 let lbuf:*u8=sys_mmap(RG_BUF);let cb:*u8=sys_mmap(RG_BUF)
27 let ln:i64=rg_read("/volume1/homes/elderwesto/nishihost/nx_tools_api_serve.elf",lbuf,RG_BUF)
28 let cn:i64=rg_read("/volume1/homes/elderwesto/nishihost/nx_tools_api_serve.elf.new",cb,RG_BUF)
29 let actual:i64=rg_extract(lbuf,ln,names,lens,tr)
30 gv_check("actual live image read and untruncated",ln==382032 && cn==392176 && actual>0 && tr[0]==0,c)
31 let missing:i64=rg_missing(names,lens,actual,cb,cn,miss,RG_MAXR)
32 gv_check("actual reviewed candidate retains normalized evidence",missing==0,c)
33 gv_puts("actual_live_route_evidence=");gv_num(actual);gv_puts(" missing=");gv_num(missing);gv_puts("\n")
34 return gv_verdict("route-prose-evidence",c,"Narrow redundant prose alias handling; binary literals still are not proof of dispatched routes")
35}