Omniscia vfat Audit

SickleStorage Static Analysis Findings

SickleStorage Static Analysis Findings

SSE-01S: Inexistent Event Emission

Description:

The linked function adjusts a sensitive contract variable yet does not emit an event for it.

Example:

contracts/base/SickleStorage.sol
50function _SickleStorage_initialize(
51 address owner_,
52 address approved_
53) internal onlyInitializing {
54 owner = owner_;
55 approved = approved_;
56}

Recommendation:

We advise an event to be declared and correspondingly emitted to ensure off-chain processes can properly react to this system adjustment.

Alleviation (6ab7af3bb495b817ffec469255ea679b1813eecb):

The vfat team evaluated this exhibit but opted to acknowledge it in the current iteration of the codebase.

SSE-02S: Inexistent Sanitization of Input Addresses

Description:

The linked function(s) accept address arguments yet do not properly sanitize them.

Impact:

The presence of zero-value addresses, especially in constructor implementations, can cause the contract to be permanently inoperable. These checks are advised as zero-value inputs are a common side-effect of off-chain software related bugs.

Example:

contracts/base/SickleStorage.sol
50function _SickleStorage_initialize(
51 address owner_,
52 address approved_
53) internal onlyInitializing {
54 owner = owner_;
55 approved = approved_;
56}

Recommendation:

We advise some basic sanitization to be put in place by ensuring that each address specified is non-zero.

Alleviation (6ab7af3bb495b817ffec469255ea679b1813eecb):

The vfat team evaluated this exhibit but opted to acknowledge it in the current iteration of the codebase.

SSE-03S: Multiple Top-Level Declarations

TypeSeverityLocation
Code StyleSickleStorage.sol:L7, L16

Description:

The referenced file contains multiple top-level declarations that decrease the legibility of the codebase.

Example:

contracts/base/SickleStorage.sol
7library SickleStorageEvents {
8 event ApprovedAddressChanged(address newApproved);
9}
10
11/// @title SickleStorage contract
12/// @author vfat.tools
13/// @notice Base storage of the Sickle contract
14/// @dev This contract needs to be inherited by stub contracts meant to be used
15/// with `delegatecall`
16abstract contract SickleStorage is Initializable {

Recommendation:

We advise all highlighted top-level declarations to be split into their respective code files, avoiding unnecessary imports as well as increasing the legibility of the codebase.

Alleviation (6ab7af3bb495b817ffec469255ea679b1813eecb):

The vfat team evaluated this exhibit but opted to acknowledge it in the current iteration of the codebase.