Compile Input Hardening Limits
This page defines mandatory limits and clean-failure behavior for untrusted inputs.
Mandatory limits
- max file size
- max token size
- max AST depth
- max expression depth
- max import depth
- max modules count
- max diagnostics budget
- max symbol budget
- max parser recursion budget
- max macro expansion budget
- optional compile-time budget (future hook)
Path validation
- reject path traversal (
..) - reject non-normalized path forms
- reject absolute paths outside project policy
- reject invalid/binary-like path payloads
- enforce sysroot/project boundary policy for source/import paths
Clean failures
- return user-facing diagnostics on limit violations
- return
InvalidInputfor hostile input - reserve ICE/InternalError for compiler bugs only
- never crash on malformed input
Smoke checks
Run:
make security-input-limits-smoke
Covers:
- huge source payload
- huge token/string payload
- deep import path
- extreme expression nesting
- path traversal attempt
- invalid unicode payload