code wiki / _hdl_build / nx_adnet_billv_gate.nx

nx_adnet_billv_gate.nx

buildroot/runtime/_hdl_build/nx_adnet_billv_gate.nx

6192 B96 linesdepth 4pulls 4 transitivereach 0 importersview sourcekind gate/prooftopic adnet
docsdependenciesstructsconstsfunctions

about

nx_adnet_billv_gate.nx -- GATE for viewable-basis billing (nx_adnet_bill anb_invoice_line_v). The decisive teeth are the ones a regression trips FIRST, and each is chosen so pass and fail produce DIFFERENT DIGITS (500 vs 5000) -- a tooth whose two outcomes look alike proves nothing: (1) BASIS: served=1000 viewable=100 must bill 100's worth. Billing 1000's worth means the basis silently reverted to the served journal, which is the whole defect (1785512185). (2) ANTI-FALLBACK: viewable UNMEASURED must REFUSE and must NOT contain the served-basis figure. (3) ANTI-FORGERY: viewable > served must REFUSE. The /ad/view beacon is unauthenticated and its url is printed in every page's source, so the count is forgeable; a creative cannot be seen more times than it was sent, so that pair is BROKEN, not merely large. expect_exit: 0 license_tier: ORIGINAL

dependencies 2 imports · 0 importers

nx_syscalls.nx nx_adnet_bill.nx nx_adnet_billv_gate.nx

imports: nx_syscalls.nxnx_adnet_bill.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main tb_puts sys_write tb_slen sys_mmap anb_invoice_line_v anb_capped anb_total_milli anb_deliv_permille ad_cat anb_catd sys_mmap ↻ tb_check tb_puts ↻ tb_has tb_slen ↻ anb_deliv_permille ↻ anb_invoice_line anb_total_milli ↻ anb_capped ↻ ad_cat ↻ anb_catd ↻ tb_pn sys_mmap ↻ sys_write ↻

structs

none

consts

none

functions

14func tb_slen(s: *u8) -> i64 { var i: i64 = 0; while s[i] != (0 as u8) { i = i + 1 } return i }
called by 2: tb_putstb_has
15func tb_puts(s: *u8) -> i64 { sys_write(1, s, tb_slen(s)); return 0 }
called by 2: tb_checkmain calls 2: sys_writetb_slen
16func tb_pn(v: i64) -> i64
called by 1: main calls 2: sys_mmapsys_write
28func tb_has(buf: *u8, n: i64, pat: *u8) -> i64
called by 1: main calls 1: tb_slen
42func tb_check(name: *u8, cond: i64) -> i64
called by 1: main calls 1: tb_puts
48func main() -> i64