DeFiHardhat
21,000 USDC
View results
Submission Details
Severity: low
Invalid

Experimental feature enabled

Summary

The LibWellMinting contract has ABIEncoderV2 enabled, as seen by the pragma directive `pragma experimental ABIEncoderV2. This experimental feature allows the contract to use complex types, such as structs and arbitrarily nested arrays, in function arguments and return values.

Albeit, the use of ABIEncoderV2 comes with certain risks, particularly when dealing with types shorter than 32 bytes, such as bytesNN, bool, and enum, when they are part of an array or a struct and encoded directly from storage. In such cases, if these storage references are used directly inside abi.encode(...) as arguments in external function calls or in event data without prior assignment to a local variable, it can lead to data corruption or invalid reverts.

In short, the LibWellMinting contract has ABIEncoderV2 enabled, which could potentially lead to issues with shorter-than-32-bytes types in certain scenarios.

There are several instances in several contracts which are in scope:

Recommendation

When possible, do not use experimental features in the final live deployment. Validate and check that all the conditions above are true for integers and arrays (i.e. all using uint256).

Updates

Lead Judging Commences

giovannidisiena Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.