```
Kernel._activatePolicy(Policy).i (src/Kernel.sol#306) is a local variable never initialized
Kernel._pruneFromDependents(Policy).i (src/Kernel.sol#413) is a local variable never initialized
Kernel._migrateKernel(Kernel).i (src/Kernel.sol#353) is a local variable never initialized
Kernel._migrateKernel(Kernel).j (src/Kernel.sol#362) is a local variable never initialized
Kernel._reconfigurePolicies(Keycode).i (src/Kernel.sol#382) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
Kernel._reconfigurePolicies(Keycode) (src/Kernel.sol#378-389) ignores return value by dependents[i].configureDependencies() (src/Kernel.sol#383)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
Kernel.executeAction(Actions,address).target_ (src/Kernel.sol#235) lacks a zero-check on :
- executor = target_ (src/Kernel.sol#251)
- admin = target_ (src/Kernel.sol#253)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
Reentrancy in Kernel._activatePolicy(Policy) (src/Kernel.sol#295-323):
External calls:
- dependencies = policy_.configureDependencies() (src/Kernel.sol#303)
State variables written after the call(s):
- getDependentIndex[keycode][policy_] = moduleDependents[keycode].length - 1 (src/Kernel.sol#310)
- moduleDependents[keycode].push(policy_) (src/Kernel.sol#309)
- _setPolicyPermissions(policy_,requests,true) (src/Kernel.sol#319)
- modulePermissions[request.keycode][policy_][request.funcSelector] = grant_ (src/Kernel.sol#399)
Reentrancy in Kernel._pruneFromDependents(Policy) (src/Kernel.sol#409-432):
External calls:
- dependencies = policy_.configureDependencies() (src/Kernel.sol#410)
State variables written after the call(s):
- getDependentIndex[keycode][lastPolicy] = origIndex (src/Kernel.sol#425)
- delete getDependentIndex[keycode][policy_] (src/Kernel.sol#426)
- dependents[origIndex] = lastPolicy (src/Kernel.sol#421)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in Kernel._activatePolicy(Policy) (src/Kernel.sol#295-323):
External calls:
- dependencies = policy_.configureDependencies() (src/Kernel.sol#303)
Event emitted after the call(s):
- PermissionsUpdated(request.keycode,policy_,request.funcSelector,grant_) (src/Kernel.sol#401)
- _setPolicyPermissions(policy_,requests,true) (src/Kernel.sol#319)
Reentrancy in Kernel.executeAction(Actions,address) (src/Kernel.sol#235-260):
External calls:
- _installModule(Module(target_)) (src/Kernel.sol#239)
- newModule_.INIT() (src/Kernel.sol#276)
- _upgradeModule(Module(target_)) (src/Kernel.sol#243)
- dependents[i].configureDependencies() (src/Kernel.sol#383)
- newModule_.INIT() (src/Kernel.sol#290)
- _activatePolicy(Policy(target_)) (src/Kernel.sol#246)
- dependencies = policy_.configureDependencies() (src/Kernel.sol#303)
- policy_.setActiveStatus(true) (src/Kernel.sol#322)
- _deactivatePolicy(Policy(target_)) (src/Kernel.sol#249)
- dependencies = policy_.configureDependencies() (src/Kernel.sol#410)
- policy_.setActiveStatus(false) (src/Kernel.sol#345)
- _migrateKernel(Kernel(target_)) (src/Kernel.sol#256)
- module.changeKernel(newKernel_) (src/Kernel.sol#355)
- policy.setActiveStatus(false) (src/Kernel.sol#366)
- policy.changeKernel(newKernel_) (src/Kernel.sol#367)
Event emitted after the call(s):
- ActionExecuted(action_,target_) (src/Kernel.sol#259)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
Policy.getModuleAddress(Keycode) (src/Kernel.sol#131-135) is never used and should be removed
fromKeycode(Keycode) (src/utils/KernelUtils.sol#16-18) is never used and should be removed
fromRole(Role) (src/utils/KernelUtils.sol#26-28) is never used and should be removed
toKeycode(bytes5) (src/utils/KernelUtils.sol#11-13) is never used and should be removed
toRole(bytes32) (src/utils/KernelUtils.sol#21-23) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Pragma version0.8.15 (src/Kernel.sol#2) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version0.8.15 (src/utils/KernelUtils.sol#2) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.15 is not recommended for deployment
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Function Module.KEYCODE() (src/Kernel.sol#95) is not in mixedCase
Function Module.VERSION() (src/Kernel.sol#100) is not in mixedCase
Function Module.INIT() (src/Kernel.sol#105) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
grantRole(Role,address) should be declared external:
- Kernel.grantRole(Role,address) (src/Kernel.sol#439-448)
revokeRole(Role,address) should be declared external:
- Kernel.revokeRole(Role,address) (src/Kernel.sol#451-458)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external
src/ analyzed (4 contracts with 78 detectors), 24 result(s) found
```