⬢ DragonFlyBSD Kernel Audit
DF-4952 / ab_all.log
← back to finding ↓ download raw
=== 1) baseline (in-tree snd_fxdiv_gen.awk, unpatched mixer) ===
Total: 6
0: [0] attn: (x * 1) >> 0
1: [1] attn: (x * 1) >> 0
2: [-1] attn: (x * 1) >> 0
3: [-1] attn: (x * 1) >> 0
4: [-1] attn: (x * 1) >> 0
5: [-1] attn: (x * 1) >> 0
ffrec: parent REC vchan fmt S16_LE 6ch sz=12  hw fmt S16_LE 2ch (matrix below mixer)
bufsoft: bufsize=16390 (bad residue: FXROUND(16390,12)=16392 > 16390)  tmpbuf allocsize=20480 (round_page)  maxfeed=65544  FXDIV_MAX=65536
---- feed_mixer_rec (real feeder_mixer.c + real feeder_matrix.c) ----
ACQUIRE-OVER: count=16392 free=16390 (rl=0 size=16390) -- KASSERT compiled out, rl -> 16392
returned 0; bufsoft rl=1 size=16390 free=0x00004005  acquire-over count=1 worst=2
root max write offset past tmpbuf base: 18446744073709188704 (window 20480)
REAR-GUARD SMASHED: window=20480 first_oob=0 farthest=45064 smashed_bytes=44367
ffrec: OOB PROVEN  (exit 42 == linear heap OOB write past tmpbuf)
exit=42  (42 == heap OOB write PROVEN)

=== 2) in-tree generator + fix.diff clamp ===
Total: 6
0: [0] attn: (x * 1) >> 0
1: [1] attn: (x * 1) >> 0
2: [-1] attn: (x * 1) >> 0
3: [-1] attn: (x * 1) >> 0
4: [-1] attn: (x * 1) >> 0
5: [-1] attn: (x * 1) >> 0
ffrec: parent REC vchan fmt S16_LE 6ch sz=12  hw fmt S16_LE 2ch (matrix below mixer)
bufsoft: bufsize=16390 (bad residue: FXROUND(16390,12)=16392 > 16390)  tmpbuf allocsize=20480 (round_page)  maxfeed=65544  FXDIV_MAX=65536
---- feed_mixer_rec (real feeder_mixer.c + real feeder_matrix.c) ----
returned 0; bufsoft rl=1 size=16390 free=0x00004005  acquire-over count=0 worst=0
root max write offset past tmpbuf base: 18446744073709188704 (window 20480)
ffrec: clean  (exit 42 == linear heap OOB write past tmpbuf)
exit=0  (0 == clamp kills the sink)

=== 3) fixed generator (snd_fxdiv_gen_fixed.awk, unpatched mixer) ===
Total: 6
0: [0] attn: (x * 1) >> 0
1: [1] attn: (x * 1) >> 0
2: [-1] attn: (x * 1) >> 0
3: [-1] attn: (x * 1) >> 0
4: [-1] attn: (x * 1) >> 0
5: [-1] attn: (x * 1) >> 0
ffrec: no bad-residue bufsize exists -- over-return precondition eliminated; feed_mixer_rec cannot wrap
ffrec: clean
exit=0  (0 == arming precondition eliminated)