``` 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 ```