harden: add magic validation and buffer bounds to parseEngine/parseConfig#196
harden: add magic validation and buffer bounds to parseEngine/parseConfig#1960x-SquidSol wants to merge 1 commit intodcccrypto:mainfrom
Conversation
…nfig parseEngine and parseConfig could be called directly (e.g., from adl.ts) without going through parseHeader which validates magic. A malicious RPC returning arbitrary bytes matching a known slab size would be silently parsed into garbage engine/config state. parseEngine also had no buffer bounds check — truncated RPC data would produce either garbage BigInts (silent) or cryptic DataView RangeErrors (no context). Added: - PERCOLAT magic check to both parseEngine and parseConfig - Buffer bounds check to parseEngine (data.length < accountsOff) catches truncation before any engine field reads Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 45 minutes and 14 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
parseEngineandparseConfigcan be called directly fromadl.tswithout going throughparseHeader(which validates PERCOLAT magic)parseEnginealso had zero buffer bounds checking — truncated RPC data would produce either garbage BigInts (silent wrong values) or crypticDataView RangeErrorwith no contextAdditions:
parseEngineandparseConfig— onereadU64LEcomparison, zero overhead for valid slabsparseEngine:data.length < layout.accountsOffensures the buffer covers the entire engine section before any field readsTest plan
🤖 Generated with Claude Code