| # 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. |