code wiki / _hdl_build / nx_cbx_imgsig_gate.nx

nx_cbx_imgsig_gate.nx source

↩ module page · 44 lines · 3174 B

1// nx_cbx_imgsig_gate.nx -- proves the comic no-fake-green image-signature check (nx_cbx_pages.img_sig_ok) accepts 2// EVERY format is_image_name admits (JPEG/PNG/GIF/WEBP/BMP) and rejects non-images. The REGRESSION it guards: a 3// WebP or GIF cover -- a valid comic page -- used to be rejected by the old JPEG/PNG-only first-page gate, failing 4// the WHOLE comic ("books like comics missing pictures"). Gate-local copy of the helper. license_tier: ORIGINAL 5import "nx_syscalls.nx" 6 7func img_sig_ok(b: *u8, n: i64) -> i64 { 8 if n >= 2 { if (b[0] as i64) == 0xff { if (b[1] as i64) == 0xd8 { return 1 } } } 9 if n >= 4 { if (b[0] as i64) == 0x89 { if (b[1] as i64) == 0x50 { if (b[2] as i64) == 0x4e { if (b[3] as i64) == 0x47 { return 1 } } } } } 10 if n >= 4 { if (b[0] as i64) == 0x47 { if (b[1] as i64) == 0x49 { if (b[2] as i64) == 0x46 { if (b[3] as i64) == 0x38 { return 1 } } } } } 11 if n >= 2 { if (b[0] as i64) == 0x42 { if (b[1] as i64) == 0x4d { return 1 } } } 12 if n >= 12 { if (b[0] as i64) == 0x52 { if (b[1] as i64) == 0x49 { if (b[2] as i64) == 0x46 { if (b[3] as i64) == 0x46 { if (b[8] as i64) == 0x57 { if (b[9] as i64) == 0x45 { if (b[10] as i64) == 0x42 { if (b[11] as i64) == 0x50 { return 1 } } } } } } } } } 13 return 0 14} 15 16func sw(s: i64, v: i64) -> i64 { return 0 } 17 18func main() -> i64 { 19 var fails: i64 = 0 20 let b: *u8 = sys_mmap(64) 21 // T1 JPEG 22 b[0]=0xff as u8; b[1]=0xd8 as u8; if img_sig_ok(b, 2) != 1 { fails = fails + 1 } 23 // T2 PNG 24 b[0]=0x89 as u8; b[1]=0x50 as u8; b[2]=0x4e as u8; b[3]=0x47 as u8; if img_sig_ok(b, 4) != 1 { fails = fails + 1 } 25 // T3 GIF8 -- the REGRESSION: a GIF cover used to fail the whole comic 26 b[0]=0x47 as u8; b[1]=0x49 as u8; b[2]=0x46 as u8; b[3]=0x38 as u8; if img_sig_ok(b, 4) != 1 { fails = fails + 1 } 27 // T4 BMP "BM" (newly admitted) 28 b[0]=0x42 as u8; b[1]=0x4d as u8; if img_sig_ok(b, 2) != 1 { fails = fails + 1 } 29 // T5 WEBP "RIFF"...."WEBP" -- the REGRESSION: a WebP cover used to fail the whole comic 30 b[0]=0x52 as u8; b[1]=0x49 as u8; b[2]=0x46 as u8; b[3]=0x46 as u8; b[8]=0x57 as u8; b[9]=0x45 as u8; b[10]=0x42 as u8; b[11]=0x50 as u8; if img_sig_ok(b, 12) != 1 { fails = fails + 1 } 31 // T6 NEG: text/XML "<?xm" is NOT an image 32 b[0]=0x3c as u8; b[1]=0x3f as u8; b[2]=0x78 as u8; b[3]=0x6d as u8; if img_sig_ok(b, 4) != 0 { fails = fails + 1 } 33 // T7 NEG: empty buffer 34 if img_sig_ok(b, 0) != 0 { fails = fails + 1 } 35 // T8 NEG: RIFF but WAVE (audio) -- not a WEBP image 36 b[0]=0x52 as u8; b[1]=0x49 as u8; b[2]=0x46 as u8; b[3]=0x46 as u8; b[8]=0x57 as u8; b[9]=0x41 as u8; b[10]=0x56 as u8; b[11]=0x45 as u8; if img_sig_ok(b, 12) != 0 { fails = fails + 1 } 37 let w: i64 = sw(1, fails) 38 let m1: *u8 = "GATE nx_cbx_imgsig verdict=GREEN pass=8/8 (JPEG/PNG/GIF/WEBP/BMP accepted; text/empty/RIFF-WAVE rejected; comic-cover regression fixed)\n" as *u8 39 let m0: *u8 = "GATE nx_cbx_imgsig verdict=RED fails\n" as *u8 40 var i: i64 = 0 41 if fails == 0 { while m1[i] != (0 as u8) { i = i + 1 } sys_write(1, m1, i); sys_exit(0); return 0 } 42 while m0[i] != (0 as u8) { i = i + 1 } sys_write(1, m0, i); sys_exit(1) 43 return 1 44}