1c43b6d9c0
#3 [DoS]: runV2 allocated make([]byte, nsLen) from a raw uint32 (up to 4 GiB) BEFORE readNetstring capped it — 5 bytes committed ~4 GB. Now reject nsLen>1<<24 immediately. #2 [DoS]: parseV2Content had no element-count/byte cap (16 MiB content = 4.2M argv, ~388 MB). Now caps maxArgs=4096 / maxFrameBytes=1<<20, mirroring runV1. Regression tests for both. #1 (empty-arg terminator collision) is a SEPARATE ship-blocker, deferred (needs a wire-design call: explicit argc vs client-side reject) — do NOT deploy the daemon until #1 lands.