From 097829af0af3ee5472564d6f1f1fd0c141e609f9 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Tue, 31 Mar 2026 19:59:24 -0400 Subject: [PATCH] sheepshaver: all 5 MOADs CLEAN --- defects/sheepshaver/scan | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 defects/sheepshaver/scan diff --git a/defects/sheepshaver/scan b/defects/sheepshaver/scan new file mode 100644 index 000000000..d9a263ec2 --- /dev/null +++ b/defects/sheepshaver/scan @@ -0,0 +1,40 @@ +CLEAN + +Target: SheepShaver (PowerPC Mac emulator, C++) +Repo: https://github.com/cebix/macemu (SheepShaver/ subtree) +Date: 2026-03-31 +Scan depth: all 5 MOADs + +MOAD-0001 (CWE-407): CLEAN + - block_cache.find() uses a 32768-slot hash table (block-cache.hpp), O(1) average. + - sifter_list (rom_patches.cpp) is bounded to 32 entries, static array, init-time only. + - IsMulticastRegistered (ether.cpp:113) is O(M) over multicast list, called per multicast + packet from dlpi_stream_list loop. Both S (streams) and M (multicast addresses) are + small in practice (single digits). Not a measurable defect. + - find_fsitem_by_id / find_fsitem (extfs.cpp) are O(N) linked-list scans called once per + FS operation, not inside an inner loop. No O(N^2) compound. + - All ROM patch scanning (find_rom_data, find_rom_resource, find_rom_trap) is init-time + startup work, not hot path. + - ppc-decode.cpp uses an indexed ii_index_table array for O(1) instruction dispatch. + +MOAD-0002 (Intertangle): CLEAN + - KernelData / EmulatorData are fixed-layout structures representing the emulated Mac + hardware state, not a god object coupling independent subsystems. They are raw memory + mapped at fixed addresses as required by the Mac ROM interface. + - Subsystems (audio, disk, video, ethernet, serial) each have their own source files and + communicate through well-defined Mac OS traps and interrupt flags. + +MOAD-0003 (Leaked Context): CLEAN + - No thread_local, __thread, pthread_key_create, or pthread_getspecific usage found. + - SheepShaver uses a single emulation thread (emul_thread) for all PowerPC execution. + The tick_thread and nvram_thread access disjoint data. + +MOAD-0004 (CWE-312): CLEAN + - No passwords, tokens, credentials, or secrets in the codebase. + - SheepShaver is a local desktop emulator with no network authentication surface. + +MOAD-0005 (Thundering Herd): CLEAN + - The JIT block cache (my_block_cache) is accessed only from the single emulation thread. + No concurrent cache-miss race is possible. + - InterruptFlags uses atomic_or / atomic_and operations (main_unix.cpp:1566-1571). + - No check+compute+put unsynchronized lazy init patterns found.