| # Security | |
| At the moment, rust-analyzer assumes that all code is trusted. Here is a | |
| **non-exhaustive** list of ways to make rust-analyzer execute arbitrary | |
| code: | |
| - proc macros and build scripts are executed by default | |
| - `.cargo/config` can override `rustc` with an arbitrary executable | |
| - `rust-toolchain.toml` can override `rustc` with an arbitrary | |
| executable | |
| - VS Code plugin reads configuration from project directory, and that | |
| can be used to override paths to various executables, like `rustfmt` | |
| or `rust-analyzer` itself. | |
| - rust-analyzer’s syntax trees library uses a lot of `unsafe` and | |
| hasn’t been properly audited for memory safety. |