code wiki / _hdl_build / nx_deploy_stage_emitter_gate_t188.nx

nx_deploy_stage_emitter_gate_t188.nx source

↩ module page · 45 lines · 2614 B

1import "nx_deploy_stage_candidate_t188.nx" 2import "nx_json.nx" 3import "nx_signal.nx" 4import "nx_gate_verdict.nx" 5func main()->i64{ 6 let c:*i64=gv_ctr();let r:*NxDeployStageResult=sys_mmap(__size_of(NxDeployStageResult)) as *NxDeployStageResult 7 ds_stage_result_init(r);r.code=0-9223372036854775807-1;r.visible=1;r.stage="test\nquote\"slash\\" 8 let length:i64=131073 9 let src:*u8=sys_mmap(length+1);var i:i64=0;while i<length{src[i]=97 as u8;i=i+1};src[length]=0 as u8 10 src[0]=10 as u8;src[1]=34 as u8;src[2]=92 as u8 11 let path:*u8="knowledge/gates/stage-large-receipt-t188.json" 12 let fd:i64=sys_openat_wr(path,MODE_0644) 13 gv_check("large escaped receipt emitted",ds_emit_result(fd,src,"example.new",r)==0,c) 14 gv_check("receipt fd closed",sys_close(fd)==0,c) 15 let n:*i64=sys_mmap(8) as *i64 16 let bytes:*u8=sys_read_file(path,n) 17 gv_check("receipt not limited to1024 or65536 bytes",*n>length,c) 18 let t:*NxJsonTok=sys_mmap(__size_of(NxJsonTok)) as *NxJsonTok 19 t.src=bytes;t.len=*n;t.pos=0;t.kind=0;t.tok_off=0;t.tok_len=0 20 var ok:i64=1;var tokens:i64=0;var done:i64=0 21 while done==0{ 22 let kind:i64=nx_json_next(t) 23 if kind==NX_JSON_ERROR{ok=0;break} 24 if kind==NX_JSON_EOF{done=1}else{tokens=tokens+1} 25 } 26 gv_check("complete receipt tokenizes without invalid string escapes",ok==1&&done==1&&tokens==53,c) 27 gv_check("failed receipt fd reports failure",ds_emit_result(0-1,src,"example.new",r)!=0,c) 28 let old:*i64=sys_mmap(16) as *i64;let lim:*i64=sys_mmap(16) as *i64;let status:*i64=sys_mmap(8) as *i64 29 let childfd:i64=sys_openat_wr("knowledge/gates/stage-noalloc-receipt-t188.json",MODE_0644) 30 let pid:i64=sys_fork() 31 if pid==0{ 32 if nx_prlimit(0,RLIMIT_AS,0 as *u8,old as *u8)!=0{sys_exit(2)} 33 lim[0]=0;lim[1]=old[1] 34 if nx_prlimit(0,RLIMIT_AS,lim as *u8,0 as *u8)!=0{sys_exit(3)} 35 if ds_emit_result(childfd,"source","target.new",r)!=0{sys_exit(4)};sys_exit(0) 36 } 37 var waited:i64=0-1;if pid>0{waited=sys_wait4(pid,status,0)};sys_close(childfd) 38 gv_check("receipt emission works under actual zero address-space limit",pid>0&&waited==pid&&wait_status_rc(status[0])==0,c) 39 let killed:i64=sys_fork() 40 if killed==0{if nx_signal_default(15)!=0{sys_exit(77)};nx_signal_raise(15);sys_exit(78)} 41 var killedwait:i64=0-1;if killed>0{killedwait=sys_wait4(killed,status,0)} 42 gv_check("signal-killed owned child cannot pass exit0",killed>0&&killedwait==killed&&wait_term_signal(status[0])==15&&wait_status_rc(status[0])!=0,c) 43 gv_puts("receipt_bytes=");gv_num(*n);gv_puts("\n") 44 return gv_verdict("stage-receipt",c,"Native JSON tokenization and real resource denial; synthetic long string is not a filesystem-path claim") 45}