Open 0xalpharush opened 6 months ago
this only affects the config part, right? because before invoking solc this should always get normalized
I only experienced the bug in forge config
. The rest of these are just areas where it doesn't seem to be normalized like it is when creating the standard json input for solc here. I'm not sure how the configuration works for chisel in order to test it
@0xalpharush Do you have any suggestions on how to improve the chisel version check?
I think we also need this validation when auto_detect_solc
is used (default IIRC)
should I add a normalization step specifically for forge config?
Yes, I think it is taken care of for forge build
and forge test
already
Note: looks like this is still an active issue - for future reference
When no solc_version
has been set it yields:
{
"evm_version": "paris",
}
With solc_version
set to 0.8.15
in foundry.toml
it correctly yields:
{
"evm_version": "london",
}
Related: https://github.com/crytic/slither/issues/2422#issuecomment-2054159134
Component
Forge, Chisel
Have you ensured that all of these are up to date?
What version of Foundry are you on?
forge 0.2.0 (84d9842 2024-02-02T00:19:34.098872000Z)
What command(s) is the bug in?
forge config --json
Operating System
macOS (Apple Silicon)
Describe the bug
When the EVM version isn't set in the foundry.toml but the solc version is, Foundry may incorrectly use
EvmVersion::Paris
without validating that it is available for the given solc verison e.g. solc 0.8.17. I would expect to be able to pass the output offorge config --json
to solc without running into errors related solc configurations. I'd also expect incompatibilities that are explicitly defined in the foundry.tom to be reported in a diagnostic.I looked into fixing this but I'm not familiar with the figment provider library and wasn't sure how to add a call to
normalize_version
that will produce a correct solc version and evm version combo cleanly (I assume someone with more knowledge of the toolchain and architecture can consolidate the validation and error handling better than myself).Relevant code for
forge config
https://github.com/foundry-rs/foundry/blob/7922fd5482f9561699e0fe5a903c90b3fa1fc50d/crates/config/src/lib.rs#L1774 Relevant code forchisel
which I believe also performs insufficient validation i.e it can produce other misconfigurations for solc version and evm version pairs besides 0.8.17 and Paris. https://github.com/foundry-rs/foundry/blob/7922fd5482f9561699e0fe5a903c90b3fa1fc50d/crates/chisel/src/session_source.rs#L108-L121Also, probably here and here could use the same fix.
For more info, see also https://github.com/crytic/slither/issues/2287