---
# System prepended metadata

title: Untitled

---

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