gearboy+gearsystem: 2 CWE-407 defects (breakpoint O(B) scan per memory access); minivmac all 5 MOADs CLEAN
gearboy-0001: Processor::CheckBreakpoints() and CheckMemoryBreakpoints() scan m_breakpoints std::vector O(B) on every opcode dispatch and every memory Read/Write. At ~4 MHz with B=64 breakpoints: ~256M comparisons/second. Fix: std::unordered_set<u16> index for O(1) point-breakpoint lookup. 8.4x speedup measured in Java model. gearsystem-0001: Same defect in GearSystem (SMS/GG emulator). Compounded by Video.cpp calling CheckMemoryBreakpoints() on every VDP VRAM/CRAM access (5 additional call sites beyond CPU). >5M O(B) scans/second at 3.58 MHz. 7.1x speedup measured in Java model. minivmac: All 5 MOADs CLEAN. LocalFindATTel() bounded to 16-20 ATT entries by design (constant, not O(N^2)). Single-threaded, no credentials, no TLS.
This commit is contained in:
parent
1edc2f5a93
commit
64c65b567d
9 changed files with 794 additions and 0 deletions
25
defects/gearboy/scan
Normal file
25
defects/gearboy/scan
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
DEFECT FOUND: see gearboy-0001
|
||||
|
||||
MOAD-0001 (CWE-407): DEFECT -- gearboy-0001
|
||||
- Processor::CheckBreakpoints() called per opcode: O(B) linear scan over
|
||||
m_breakpoints vector. B = number of active breakpoints.
|
||||
- Processor::CheckMemoryBreakpoints() called per memory Read/Write via
|
||||
Memory_inline.h: O(B) linear scan per access.
|
||||
- At ~4 MHz with B=64 breakpoints: ~256M comparisons/second in debug mode.
|
||||
- Fix: std::unordered_set<u16> index for O(1) point-breakpoint lookup.
|
||||
|
||||
MOAD-0002 (Intertangle): CLEAN
|
||||
- GearboyCore aggregates subsystems (Processor, Memory, Cartridge, Video,
|
||||
Audio) but this is intentional emulator architecture, not god-object
|
||||
coupling. Each subsystem has a clean interface and independent state.
|
||||
|
||||
MOAD-0003 (Leaked Context): CLEAN
|
||||
- No thread_local or TLS usage. Gearboy is single-threaded per emulation
|
||||
instance. Audio uses SDL callbacks but carries no request context.
|
||||
|
||||
MOAD-0004 (CWE-312): CLEAN
|
||||
- No authentication, credentials, or secrets. Pure game emulator.
|
||||
TraceLogger logs CPU registers and memory -- no sensitive data.
|
||||
|
||||
MOAD-0005 (Thundering Herd): CLEAN
|
||||
- Single-threaded emulation. No concurrent lazy-init cache patterns.
|
||||
Loading…
Add table
Add a link
Reference in a new issue