# Lua — CWE-407 Diamond Recursion Scan: CLEAN ## Scan Date 2026-03-29 ## Targets Checked ### 1. Metamethod dispatch (`__index` / `__newindex` chains, `lvm.c`) - **File:** `lvm.c`, line 50: `#define MAXTAGLOOP 2000` - **Mechanism:** Tag-method chains are bounded by `MAXTAGLOOP` counter (2000 steps). Any `__index` chain exceeding this triggers `luaG_runerror("'__index' chain too long")`. - No recursive graph traversal — iterative loop with hard cap. - **Result:** CLEAN (bounded by counter). ### 2. Type system - Lua is dynamically typed. There is no compile-time type hierarchy, no module inclusion graph, and no type inference pass. - No concept of module diamonds exists at the language level. - **Result:** CLEAN (not applicable). ### 3. Parser (`lparser.c`) - Block/scope tracking uses a linked list of `BlockCnt` structs — O(depth) stack. No graph traversal. - **Result:** CLEAN. ## Conclusion No CWE-407 diamond recursion defects found in Lua. The language has no compile-time type graph; runtime metamethod chains are bounded by `MAXTAGLOOP`.