code wiki / _hdl_build / nx_descriptor_gate_t188.nx

nx_descriptor_gate_t188.nx source

↩ module page · 26 lines · 1659 B

1import "nx_descriptor_candidate_t188.nx" 2import "nx_gate_verdict.nx" 3func main()->i64{ 4 let c:*i64=gv_ctr();let stat:*u8=sys_mmap(NX_STAT_X64_BYTES) 5 let name:*u8="knowledge/gates/fd-mode-t188.fixture" 6 let moved:*u8="knowledge/gates/fd-mode-t188.moved" 7 let fd:i64=sys_openat_wr(name,MODE_0600) 8 gv_check("fixture descriptor opened",fd>=0,c);if fd<0{return 1} 9 gv_check("descriptor metadata syscall80",sys_fstat_fd(fd,stat)==0,c) 10 gv_check("descriptor mode0600",sys_stat_permissions(stat)==MODE_0600,c) 11 gv_check("rename original descriptor target",sys_renameat(name,moved)==0,c) 12 let second:i64=sys_openat_wr(name,MODE_0600) 13 gv_check("replacement path created",second>=0,c) 14 gv_check("descriptor chmod52 succeeds",sys_fchmod_fd(fd,MODE_0755)==0,c) 15 gv_check("moved descriptor metadata succeeds",sys_fstat_fd(fd,stat)==0,c) 16 gv_check("moved inode mode0755",sys_stat_permissions(stat)==MODE_0755,c) 17 gv_check("replacement descriptor metadata succeeds",sys_fstat_fd(second,stat)==0,c) 18 gv_check("replacement path remains0600",sys_stat_permissions(stat)==MODE_0600,c) 19 gv_check("special privilege bits refused",sys_fchmod_fd(fd,4095)==NX_FILE_DESCRIPTOR_INVALID,c) 20 gv_check("negative fd refused",sys_fchmod_fd(0-1,MODE_0600)==NX_FILE_DESCRIPTOR_INVALID,c) 21 gv_check("metadata null refused",sys_fstat_fd(fd,0 as *u8)==NX_FILE_DESCRIPTOR_INVALID,c) 22 gv_check("descriptor close checked",sys_close(fd)==0,c) 23 gv_check("closed descriptor reports EBADF",sys_fchmod_fd(fd,MODE_0600)==(0-9),c) 24 gv_check("replacement descriptor close checked",sys_close(second)==0,c) 25 return gv_verdict("descriptor",c,"Filesystem fixture only; no service or live artifact changed") 26}