nx_contentdiff_sectionless_gate_t314.nx source
↩ module page · 32 lines · 2101 B
1import "_hdl_build/nx_contentdiff_lib.nx"
2import "nx_gate_verdict.nx"
3func cs314_reset(dst:*u8,src:*u8,n:i64)->i64{var i:i64=0;while i<n{dst[i]=src[i];i=i+1};return 0}
4func main()->i64{
5 let checks:*i64=gv_ctr()
6 var n:i64=0
7 let source:*u8=sys_map_file("/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_behavior_fixture_a_t297.sov.elf",&n)
8 if (source as i64)<=0{return 2}
9 let copy:*u8=sys_mmap_try(n);if (copy as i64)<=0{sys_munmap_direct(source,n);return 2}
10 cs314_reset(copy,source,n)
11 var c:NxCdStructured;c.buf=copy;c.bytes=n
12 gv_check("actual native release has no section table",nx_elf_get_u64_le(copy,40)==0&&nx_elf_get_u16_le(copy,60)==0,checks)
13 gv_check("actual native release program extents validate",cds_sectionless(&c)==0,checks)
14 c.bytes=119
15 gv_check("truncated program table refuses",cds_sectionless(&c)==CDS_INVALID,checks);c.bytes=n
16 copy[40]=64 as u8
17 gv_check("extended section count remains explicit unsupported",cds_sectionless(&c)==CDS_UNKNOWN,checks);cs314_reset(copy,source,n)
18 copy[62]=1 as u8
19 gv_check("section name index without sections refuses",cds_sectionless(&c)==CDS_INVALID,checks);cs314_reset(copy,source,n)
20 copy[54]=55 as u8
21 gv_check("unknown program entry layout refuses",cds_sectionless(&c)==CDS_UNKNOWN,checks);cs314_reset(copy,source,n)
22 copy[56]=255 as u8;copy[57]=255 as u8
23 gv_check("extended program count not mistaken for no sections",cds_sectionless(&c)==CDS_UNKNOWN,checks);cs314_reset(copy,source,n)
24 copy[32]=1 as u8
25 gv_check("program table overlapping header refuses",cds_sectionless(&c)==CDS_INVALID,checks);cs314_reset(copy,source,n)
26 var i:i64=104;while i<112{copy[i]=0 as u8;i=i+1}
27 gv_check("load segment file bytes cannot exceed memory bytes",cds_sectionless(&c)==CDS_INVALID,checks);cs314_reset(copy,source,n)
28 copy[96]=255 as u8;copy[97]=255 as u8
29 gv_check("segment extending beyond artifact refuses",cds_sectionless(&c)==CDS_INVALID,checks)
30 sys_munmap_direct(copy,n);sys_munmap_direct(source,n)
31 return gv_verdict("SECTIONLESS-ELF",checks,"Actual native release plus malformed derivatives; no loader or behavior approval")
32}