code wiki / (root) / nx_site_chrome_body_gate_t138.nx

nx_site_chrome_body_gate_t138.nx source

↩ module page · 80 lines · 6845 B

1// nx_site_chrome_search_gate_t53.nx -- Validates and processes shared surface navigation data with HTML escaping and route checks. 2import "nx_site_chrome_body_t138.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,"&lt;&amp;&gt;" 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&amp;b=2" as *u8)==1&&t48_has(out,safe,"&lt;title&gt;" as *u8)==1&&t48_has(out,safe,"&lt;desc&gt;" 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 58 let searchn:i64=sc_nav_buffer(out,0,65536,registry,sz[0]) 59 gv_check("shared navigation emits Nishi Search form" as *u8,searchn>0&&t48_has(out,searchn,"Nishi Search" as *u8)==1&&t48_has(out,searchn,"role=" as *u8)==1,c) 60 gv_check("hardcoded four-link bar absent" as *u8,t48_has(out,searchn,"nxlinks" as *u8)==0,c) 61 gv_check("browse remains explicitly discoverable" as *u8,t48_has(out,searchn,">Browse</summary>" as *u8)==1&&t48_has(out,searchn,"/compare" as *u8)==1&&t48_has(out,searchn,"/gallery" as *u8)==1&&t48_has(out,searchn,"/library" as *u8)==1&&t48_has(out,searchn,"/research" as *u8)==1,c) 62 gv_check("menu border box stays inside available height" as *u8,t48_has(out,searchn,".nxpanel{box-sizing:border-box;" as *u8)==1,c) 63 gv_check("zero available space also removes vertical padding" as *u8,t48_has(out,searchn,"padding:min(8px,calc(var(--nx-menu-height,50dvh)/2)) 8px" as *u8)==1,c) 64 let fd:i64=sys_openat_wr("/tmp/nishi-search-navigation-compat-t138.html" as *u8,420) 65 gv_check("private nav output writable" as *u8,fd>=0,c) 66 if fd>=0 {let wrote:i64=sys_write(fd,out,searchn);sys_close(fd);gv_check("actual nav output retained" as *u8,wrote==searchn,c)} 67 gv_check("both equality APIs accept two empty strings",streq("","")==1&&sc_text_equal("","")==1,c) 68 gv_check("both equality APIs reject empty versus nonempty",streq("","a")==0&&sc_text_equal("","a")==0,c) 69 gv_check("both equality APIs reject nonempty versus empty",streq("a","")==0&&sc_text_equal("a","")==0,c) 70 gv_check("both equality APIs accept exact bytes",streq("beach","beach")==1&&sc_text_equal("beach","beach")==1,c) 71 gv_check("both equality APIs reject shorter prefix",streq("beach","beaches")==0&&sc_text_equal("beach","beaches")==0,c) 72 gv_check("both equality APIs reject longer prefix",streq("beaches","beach")==0&&sc_text_equal("beaches","beach")==0,c) 73 gv_check("both equality APIs reject first differing byte",streq("reach","beach")==0&&sc_text_equal("reach","beach")==0,c) 74 gv_check("both equality APIs reject late differing byte",streq("beach","beack")==0&&sc_text_equal("beach","beack")==0,c) 75 let nul_a:*u8=sys_mmap(4);let nul_b:*u8=sys_mmap(4) 76 nul_a[0]=97 as u8;nul_a[1]=0 as u8;nul_a[2]=98 as u8;nul_a[3]=0 as u8 77 nul_b[0]=97 as u8;nul_b[1]=0 as u8;nul_b[2]=99 as u8;nul_b[3]=0 as u8 78 gv_check("both APIs stop at terminator despite different trailing bytes",streq(nul_a,nul_b)==1&&sc_text_equal(nul_a,nul_b)==1,c) 79 return gv_verdict("SITE-CHROME-COMPOSABLE",c,"Private shared foundation seam; no browser or page adoption") 80}