# UNDF: UNDF-2026-000000578 # Zig CWE-407 Scan — CLEAN ## Date 2026-03-27 ## Scope - `src/Sema.zig` — semantic analysis, type inference, comptime evaluation - `src/InternPool.zig` — type/value interning - `src/Zcu.zig`, `src/Zcu/PerThread.zig` — compilation unit management - `src/Air/Liveness.zig` — liveness analysis - `src/link/Elf.zig`, `src/link/Elf/` — ELF linker - `src/link/MachO.zig`, `src/link/Elf/synthetic_sections.zig` - `src/codegen/x86_64/CodeGen.zig`, `src/codegen/llvm.zig` ## Findings No CWE-407 defects found. Zig's compiler is well-designed with O(1) data structures throughout all hot paths: - **Error set membership**: `InternPool.ErrorSetType.nameIndex` uses a hash map (`names_map`) — O(1) lookup. - **Error set merge**: `errorSetMerge` builds via `InferredErrorSet.NameMap` (hash map) — O(N). - **Liveness analysis**: `live_set` is `AutoHashMapUnmanaged` — O(1) operations. - **Switch dedup**: `seen_errors` is `AutoHashMap` — O(1) operations. - **GOT/PLT entries**: Indexed via `symbol.flags.has_got` / `symbol.addExtra` — O(1). - **Rpath dedup**: `rpath_table` is a hash map — O(1). - **Analysis tracking**: `outdated`, `failed_analysis`, `analysis_in_progress` are all `AutoHashMapUnmanaged` or `AutoArrayHashMap` — O(1) contains checks. The one instance of `std.mem.indexOfScalar` found (`src/InternPool.zig:1890`) is a null-check for underscore characters in strings — not a membership test in a hot loop. ## Conclusion Zig CLEAN for CWE-407. The language team has consistently chosen hash-based data structures for all compiler-internal membership tracking.