nx_site_chrome_composable_gate_t48.nx source
↩ module page · 58 lines · 4453 B
1// nx_site_chrome_composable_gate_t48.nx -- Validates and processes shared surface navigation data with security checks and HTML escaping.
2import "nx_site_chrome_composable_t48.nx"
3import "nx_gate_verdict.nx"
4func t48_len(p:*u8)->i64 {var n:i64=0;while p[n]!=(0 as u8) {n=n+1};return n}
5func t48_has(p:*u8,n:i64,t:*u8)->i64 {let m:i64=t48_len(t);var i:i64=0;while i+m<=n {var j:i64=0;while j<m {if p[i+j]!=t[j] {break};j=j+1};if j==m {return 1};i=i+1};return 0}
6func main()->i64 {
7 let c:*i64=gv_ctr();let sz:*i64=sys_mmap(16) as *i64
8 let registry:*u8=sys_read_file("/volume1/homes/elderwesto/nishihost/surfaces.reg" as *u8,sz)
9 gv_check("actual shared surface registry read" as *u8,(registry as i64)>0&&sz[0]>0,c)
10 if (registry as i64)<=0||sz[0]<=0 {return 3}
11 let out:*u8=sys_mmap(65537);out[65536]=173 as u8
12 let n:i64=sc_nav_buffer(out,0,65536,registry,sz[0])
13 gv_check("shared navigation composes into bounded destination" as *u8,n>0&&n<65536,c)
14 gv_check("navigation keeps adjacent guard" as *u8,out[65536]==(173 as u8),c)
15 let exact:*u8=sys_mmap(n+1);exact[n]=173 as u8
16 let actual:i64=sc_nav_buffer(exact,0,n,registry,sz[0])
17 gv_check("exact destination succeeds without terminator overrun" as *u8,actual==n&&exact[n]==(173 as u8),c)
18 var same:i64=1;var i:i64=0;while i<n {if exact[i]!=out[i] {same=0};i=i+1}
19 gv_check("repeat emits byte-identical shared component" as *u8,same==1,c)
20 let short:*u8=sys_mmap(n+1);short[n-1]=173 as u8
21 gv_check("short destination refused" as *u8,sc_nav_buffer(short,0,n-1,registry,sz[0])<0,c)
22 gv_check("short destination never crosses boundary" as *u8,short[n-1]==(173 as u8),c)
23 gv_check("invalid starting offset refused" as *u8,sc_nav_buffer(short,n+1,n,registry,sz[0])<0,c)
24
25 let fieldout:*u8=sys_mmap(9);fieldout[8]=173 as u8
26 gv_check("oversize field refuses before copy" as *u8,sc_field("123456789" as *u8,0,9,0,fieldout,8)<0&&fieldout[8]==(173 as u8),c)
27 gv_check("exact field retains terminator and guard" as *u8,sc_field("1234567" as *u8,0,7,0,fieldout,8)==7&&fieldout[7]==(0 as u8)&&fieldout[8]==(173 as u8),c)
28 let invalid:*u8="/x|Play||x|public|1|desc" as *u8
29 gv_check("missing title refused without output" as *u8,sc_nav_buffer(out,0,65536,invalid,t48_len(invalid))<0,c)
30 gv_check("external scheme refused" as *u8,sc_route_ok("javascript:alert(1)" as *u8)==0,c)
31 gv_check("network relative route refused" as *u8,sc_route_ok("//evil.test" as *u8)==0,c)
32 gv_check("internal route accepted" as *u8,sc_route_ok("/beta/beach?x=1&y=2" as *u8)==1,c)
33 var esc:SiteChromeSink;esc.fd=-1;esc.data=out;esc.pos=0;esc.capacity=65536;esc.failed=0
34 sc_escape(&esc,"<&>" as *u8);out[esc.pos]=0 as u8
35 gv_check("HTML text escaped" as *u8,streq(out,"<&>" as *u8)==1,c)
36 gv_check("invalid output descriptor propagated" as *u8,mark_svg(999999)!=0&&css_nav(999999)!=0,c)
37
38
39 let longrow:*u8=sys_mmap(2048);let prefix:*u8="/x|Play|";var k:i64=0
40 while k<8 {longrow[k]=prefix[k];k=k+1};while k<264 {longrow[k]=65 as u8;k=k+1}
41 let suffix:*u8="|x|public|1|desc";var q:i64=0;while suffix[q]!=(0 as u8) {longrow[k]=suffix[q];k=k+1;q=q+1}
42 out[0]=173 as u8
43 gv_check("long registry title refused before output" as *u8,sc_nav_buffer(out,0,65536,longrow,k)<0&&out[0]==(173 as u8),c)
44 let inj:*u8="/x?a=1&b=2|Play|<title>|x|public|1|<desc>" as *u8
45 let safe:i64=sc_nav_buffer(out,0,65536,inj,t48_len(inj))
46 gv_check("actual registry href and text escaped" as *u8,safe>0&&t48_has(out,safe,"/x?a=1&b=2" as *u8)==1&&t48_has(out,safe,"<title>" as *u8)==1&&t48_has(out,safe,"<desc>" as *u8)==1,c)
47 gv_check("native details has no singleton checkbox" as *u8,t48_has(out,safe,"<details" as *u8)==1&&t48_has(out,safe,"nxtgl" as *u8)==0,c)
48 let malformed:*u8="/x|Other|Title|x|public|1|desc" as *u8
49 gv_check("unknown section refused" as *u8,sc_registry_ok(malformed,t48_len(malformed))==0,c)
50
51 let crlf:*u8="/x|Play|Title|x|public|1|desc\r\n" as *u8
52 gv_check("CRLF registry accepted" as *u8,sc_registry_ok(crlf,t48_len(crlf))==1,c)
53 let legacy:*u8=sys_mmap(512)
54 gv_check("legacy five argument field remains callable" as *u8,field(crlf,0,t48_len(crlf)-1,0,legacy)==2&&streq(legacy,"/x" as *u8)==1,c)
55 let crn:i64=sc_nav_buffer(out,0,65536,crlf,t48_len(crlf))
56 gv_check("CSS separator is real newline" as *u8,crn>0&&t48_has(out,crn,"}\\n.nxgrp" as *u8)==0&&t48_has(out,crn,"}\n.nxgrp" as *u8)==1,c)
57 return gv_verdict("SITE-CHROME-COMPOSABLE",c,"Private shared foundation seam; no browser or page adoption")
58}