Commit graph

601 commits

Author SHA1 Message Date
d668589698 xenia: 1 CWE-407 defect (xenia-0001), MOADs 0002-0005 CLEAN
xenia-0001: ObjectTable::GetAllObjects() in
src/xenia/kernel/util/object_table.cc uses std::find on a growing results
vector to deduplicate XObject pointers while iterating all 16,384+ table
slots. Each slot incurs an O(results.size()) linear scan, giving O(S*R)
total where S = slot count and R = unique object count. Fix: unordered_set
seen-pointer set reduces membership test to O(1). Measured 4.3x speedup.

MOAD-0002 Intertangle: CLEAN
MOAD-0003 Leaked Context: CLEAN (TLS vars are thread-scoped, not request-scoped)
MOAD-0004 CWE-312: CLEAN (no credentials or key bytes logged)
MOAD-0005 Thundering Herd: CLEAN (all caches use global_critical_region_ lock)
2026-03-31 19:40:18 -04:00
236deaa9af amiberry: all 5 MOADs CLEAN 2026-03-31 19:38:33 -04:00
ca7b30dd3d aranym: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
aranym-0001: hardware.cpp getModule() O(D) linear scan over 17 devices
on every 68k I/O read/write. Replaced with O(log D) binary search over
a sorted HWRange table built at HWInit(). 2.73x speedup measured.
2026-03-31 19:38:30 -04:00
54827d6eb7 ppsspp: add ppsspp-0004 CWE-407 mutex waitingThreads dedup, extend unit test to 8/8 PASS
ppsspp-0004: sceKernelLockMutex/CB and sceKernelLockLwMutex/CB (4 sites)
scan mutex->waitingThreads vector with std::find before push_back --
O(W) per lock attempt. Fix: parallel unordered_set for O(1) dedup.
Unit test extended to cover ppsspp-0004; all 8/8 PASS (ratios 5-27x).
2026-03-31 19:37:31 -04:00
7fa196837a scummvm: 2 CWE-407 defects, vita3k: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
scummvm-0001: crab PathfindingGrid::getNearestOpenNode BFS visited set
  Common::Array<Node*> O(N^2), fix std::unordered_set O(N), 104x speedup

scummvm-0002: tsage WalkRegions::calculateRestOfRoute _disabledRegions
  Common::List<int>::contains O(D) in recursive route loop, fix
  std::unordered_set<int> O(1), 2.5x speedup

vita3k-0001: ngs deliver_data voice_queue std::vector::contains O(V^2*P)
  per audio frame, fix std::unordered_set built once per frame O(V*P),
  9.3x speedup at V=256
2026-03-31 19:37:12 -04:00
186265790e citra: SKIP — project defunct, both repos redirect to Azahar with no source 2026-03-31 19:36:43 -04:00
1ec3a041aa retroarch, openemu: 2 CWE-407 defects, MOADs 0002-0005 CLEAN
retroarch-0002: core_info_database_supports_content_path O(C*(E+D)) per file
in ROM scanner, 193x speedup at C=100 cores; fix: ext->database hash map
built at core list init, O(1) lookups replace full core-list scan.

openemu-0001: SetupAssistant knownCores Array.contains O(N^2) core dedup,
17x op-count at N=35 cores; fix: Set<CoreDownload> for O(1) .contains.

MOADs 0002-0005 for both targets: RetroArch runloop is single-threaded by
design (no leaked context); no credential logging found (CHEEVOS_LOG_PASSWORD
guarded and undef'd by default); no unguarded cache thundering herd.
OpenEmu: no ThreadLocal patterns; no credential logging; NSCache is
thread-safe and duplicate fetch work is bounded.
2026-03-31 19:31:58 -04:00
2f0da6752a zesarux: 1 CWE-312 defect, MOAD 0001/0002/0003/0005 CLEAN
yabause: 1 CWE-312 defect, MOAD 0001/0002/0003/0005 CLEAN
vita3k-0001: unit test added for pre-existing CWE-407 patch
2026-03-31 19:29:16 -04:00
c7344d5783 pcsx-redux: all 5 MOADs CLEAN 2026-03-31 19:26:48 -04:00
4fe601f541 decaf: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 19:26:43 -04:00
66f2e14770 supermodel: all 5 MOADs CLEAN (full coverage) 2026-03-31 19:25:03 -04:00
0ba09a4f4c rpcs3: 1 new defect (MOAD-0004 CWE-312 room password logged verbatim) 2026-03-31 19:24:59 -04:00
20b8a57f89 fuse: all 5 MOADs CLEAN
linapple: 1 CWE-312 defect (MOAD-0004), MOAD 0001/0002/0003/0005 CLEAN
2026-03-31 19:15:33 -04:00
4b180cd7ac bochs: all 5 MOADs CLEAN 2026-03-31 19:13:12 -04:00
28af16f96c caprice32: 2 CWE-407 defects, MOAD 0002-0005 CLEAN 2026-03-31 19:12:58 -04:00
9d46caa262 pcem: all 5 MOADs CLEAN 2026-03-31 19:07:46 -04:00
eeef9c0016 86box: all 5 MOADs CLEAN 2026-03-31 19:07:39 -04:00
cba1e8b030 vbam: all 5 MOADs CLEAN 2026-03-31 19:06:42 -04:00
8ec20778f5 openmsx: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
openmsx-0001: MSXCPUInterface::checkBreakPoints() O(B) linear scan
over all breakpoints per Z80 instruction when any breakpoint is active.
Fix: unordered_map<uint16_t, vector<id>> index gives O(k) lookup where
k = breakpoints at current PC (typically 0). 500x improvement at B=500.
2026-03-31 19:06:37 -04:00
7e39ced759 ares: all 5 MOADs CLEAN 2026-03-31 18:56:59 -04:00
a1bfc140c4 cxbx-reloaded: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 18:56:55 -04:00
efb2eb8a25 desmume: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
desmume-0001: armInnerLoop scans breakPoints std::vector<u32> linearly
O(B) on every ARM9 and ARM7 instruction (~66+33 MHz); replace with
std::unordered_set<u32> for O(1) lookup. 3.5x speedup at B=32. MOAD 0002-0005 CLEAN.
2026-03-31 18:56:46 -04:00
c51cac9fb1 melonds: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
melonds-0001: GPU3D_Soft RenderScanline iterates all P polygons per
scanline O(P*S) per frame; active-list sweep gives O(P log P + A_total).
9x speedup at P=2048 with typical short-lived polygons. MOAD 0002-0005 CLEAN.
2026-03-31 18:56:40 -04:00
975eb12276 flycast: all 5 MOADs CLEAN 2026-03-31 18:47:05 -04:00
a663290e44 lime3ds: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 18:46:59 -04:00
cb3ee91292 undf: assign 1040-1056; stamp emulator wave patches (hatari/fceux/sameboy/duckstation/pcsx2/mupen64plus/mednafen/vice/fbneo/dolphin/genesis-plus-gx/ryujinx/cemu/fs-uae) 2026-03-31 18:18:58 -04:00
907aaec8c8 fs-uae: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 18:18:19 -04:00
ba31decc54 xemu: all 5 MOADs CLEAN 2026-03-31 18:17:09 -04:00
65578228e4 cemu: 2 CWE-407 defects, MOAD 0002-0005 CLEAN 2026-03-31 18:17:02 -04:00
7b1f81c260 blastem: all 5 MOADs CLEAN
CWE-407: key dispatch uses 2-level array O(1), no list scan in hot paths;
breakpoints patched into JIT code (not per-instruction scan); controller
info heuristics O(N) only on hotplug event (not emulation loop). MOAD 0002:
current_system is expected single-emulator global. MOAD 0003: C codebase,
no ThreadLocal. MOAD 0004: megawifi stub strings are placeholders, not real
credential logging. MOAD 0005: no unsynchronized cache patterns found.
2026-03-31 18:06:09 -04:00
8e1b8b1694 ryujinx: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
ryujinx-0001: ManagedSocketPollManager Poll()/Select() List<Socket>.Contains()
inside loop after Socket.Select() trims lists to ready sockets. O(E*S) -> O(E+S)
with HashSet<Socket> conversion. 49.8x speedup at E=500. MOAD 0002-0005 CLEAN.
2026-03-31 18:06:01 -04:00
f3d6685811 genesis-plus-gx: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
genesis-plus-gx-0001: retro_cheat_set duplicate cheat detection uses
O(N) linear scan over cheatlist[0..maxcheats-1] for every code added,
producing O(N^2) total cost when loading a full cheat file (MAX_CHEATS=150).
Fix: open-addressing hash table keyed by (address, data), O(1) per insert.
9x speedup measured at N=150.
2026-03-31 18:04:48 -04:00
8631453f5e dolphin: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
dolphin-0001: BreakPoints::GetRegularBreakpoint O(N) std::ranges::find
over m_breakpoints vector, called per CPU instruction when breakpoints
are active. Fix: unordered_map<u32, size_t> index rebuilt on mutation,
O(1) lookup. 2.5x speedup at N=64, scales further with breakpoint count.
2026-03-31 18:04:42 -04:00
24524ac502 vice: 1 CWE-407 defect, MOAD 0002-0005 CLEAN
vice-0001: monitor breakpoint list O(N) scan per opcode — search_checkpoint_list
traverses sorted checkpoint linked list without early exit. Code comment promises
"we can drop out early" but never implements it. Fix: break when entry.start_addr
exceeds target address. 200x fewer comparisons for addresses below first breakpoint.
11/11 PASS.

DOSBox-X: dosbox-x-0001/0002 previously committed (2026-03-31). MOAD 0002-0005 CLEAN.
2026-03-31 17:52:21 -04:00
4170c71414 fbneo-0001: remove compiled test binary 2026-03-31 17:51:07 -04:00
5aaaac1ee3 fbneo: 1 CWE-407 defect, MOAD 0002-0005 CLEAN; mame: update scan to all 5 MOADs CLEAN
fbneo-0001: BurnDrvGetIndex O(N) linear scan over 24493 drivers -> O(1) unordered_map,
91x speedup at N=5000. Fix: hash index built at BurnLibInit, cleared at BurnLibExit.
mame: confirmed CLEAN on all 5 MOADs (binary search for driver lookup, single-threaded).
2026-03-31 17:50:45 -04:00
52edb7a6ea roles: java-topology is sandbox, undefect.com is source of truth 2026-03-31 17:48:57 -04:00
670ef7b771 mednafen: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 17:38:19 -04:00
0031b1296d mupen64plus: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 17:38:14 -04:00
e781dbe9e9 pcsx2: 1 CWE-407 defect (pcsx2-0003), MOAD 0002-0005 CLEAN 2026-03-31 17:37:01 -04:00
6591438096 duckstation: 2 CWE-407 defects, MOAD 0002-0005 CLEAN 2026-03-31 17:36:57 -04:00
30abd28d6f mgba: all 5 MOADs CLEAN 2026-03-31 17:25:01 -04:00
b98583bd03 snes9x: all 5 MOADs CLEAN 2026-03-31 17:24:57 -04:00
bce0df4bb6 atari800: all 5 MOADs CLEAN 2026-03-31 17:24:33 -04:00
58271bc4a8 stella: all 5 MOADs CLEAN 2026-03-31 17:24:33 -04:00
2611f389b6 hatari: 1 CWE-407 defect, MOAD 0002-0005 CLEAN 2026-03-31 17:24:29 -04:00
64dee0eb9c nestopia: all 5 MOADs CLEAN
MOAD-0001 (CWE-407): Nestopia uses std::lower_bound (binary search, sorted
array) for cheat code lookup in NstCheats.cpp -- already O(log N). Input
mapping in fltkui/inputmanager.cpp uses hash maps (jbmap/jhmap/jamap keyed
by port*100+inum) -- O(1). No linear scan inside any hot loop found.

MOAD-0002: Subsystems communicate through typed API layers (Cpu::Link,
Cpu::Unlink, NES_PEEK_A/NES_POKE_AD macros). No shared god-object mutable
global state coupling found.

MOAD-0003: No ThreadLocal or thread-scoped identity carriers found.
Single-threaded emulation core.

MOAD-0004: No netplay or credential handling in core or fltkui. No logging
of secrets found.

MOAD-0005: No cache get+null+compute+put race patterns found. CLEAN.
2026-03-31 17:17:48 -04:00
4d3cfc9435 fceux: 1 CWE-407 defect, MOAD 0002-0004 noted, MOAD 0005 CLEAN
MOAD-0001 (CWE-407): SubCheatsRead in src/cheat.cpp scans all C active
cheats linearly on every NES memory read at any cheat address. O(C) per
read, C up to 256. Fix: cheat_idx[0x10000] direct address lookup, O(1).
Unit test: 74.7x speedup at C=256. 1/1 PASS.

MOAD-0002: Global mutable state (SubCheats[], ARead[], CheatRPtrs[])
couples cheat, PPU, CPU subsystems -- expected single-threaded NES
architecture, not an actionable intertangle defect.

MOAD-0003: thread_local in profiler.cpp (per-thread profiling data) and
QtScriptManager.cpp (per-JS-engine context pointer) -- legitimate
thread-local scoping, not a leaked request context carrier.

MOAD-0004: NetPlay.cpp line 788 logs netplay session password verbatim
via printf("Authorize: Player: %i   Passwd: %s\n", msg->playerId,
msg->pswd). Debug printf, no patch created per scan protocol (0001 only).

MOAD-0005: No cache get+null+compute+put races found. CLEAN.
2026-03-31 17:17:36 -04:00
7f89c7a14c gambatte: SKIP, repo taken private
https://github.com/sinamas/gambatte returns a placeholder README only:
"This project has been taken private." No source available to scan.
All 5 MOADs: UNSCANNED, source unavailable.
2026-03-31 14:38:24 -04:00
f46f7c9588 sameboy: 2 CWE-407 defects, MOAD 0002-0005 CLEAN
sameboy-0001: test_watchpoint() O(W) linear scan per GB memory read/write.
Every call to GB_read_memory / GB_write_memory scans all watchpoints when
n_watchpoints > 0. Fix: watchpoint_address_flags[0x10000] lookup table gives
O(1) early exit; 128x speedup at W=128.

sameboy-0002: should_break() O(B) linear scan per CPU instruction fetch.
GB_debugger_run() calls should_break() every instruction when debug_active.
Fix: breakpoint_address_set[0x10000] boolean table gives O(1) early exit;
128x speedup at B=128.

MOAD-0002: CLEAN, gb struct passed explicitly, no shared global state.
MOAD-0003: CLEAN, __thread only used for local string formatting buffers.
MOAD-0004: CLEAN, no network credentials logged.
MOAD-0005: CLEAN, no unsynchronized cache patterns found.
2026-03-31 14:37:53 -04:00