_packedPermissions
Contract: JBOperatorStore
- Step by step
- Code
- Errors
- Bug bounty
Converts an array of permission indexes to a packed uint256.
Definition
function _packedPermissions(uint256[] calldata _indexes) private pure returns (uint256 packed) {...}
_indexesare the indexes of the permissions to pack.- The view function is private to the contract.
- The view function does not modify or reference state variables outside the function.
- The function returns the packed value.
Body
-
Loop through the provided indexes.
for (uint256 _i = 0; _i < _indexes.length; _i++) { ... } -
Get a reference to the permission index being iterated on.
uint256 _index = _indexes[_i]; -
Make sure the permission index is one of the 255 indexes in a
uint256.if (_index > 255) revert PERMISSION_INDEX_OUT_OF_BOUNDS(); -
Flip the bit at the specified index of the packed value being returned to indicate a truthy permission.
// Turn the bit at the index on.
packed |= 1 << _index;
/**
@notice
Converts an array of permission indexes to a packed `uint256`.
@param _indexes The indexes of the permissions to pack.
@return packed The packed value.
*/
function _packedPermissions(uint256[] calldata _indexes) private pure returns (uint256 packed) {
for (uint256 _i = 0; _i < _indexes.length; _i++) {
uint256 _index = _indexes[_i];
if (_index > 255) revert PERMISSION_INDEX_OUT_OF_BOUNDS();
// Turn the bit at the index on.
packed |= 1 << _index;
}
}
| String | Description |
|---|---|
PERMISSION_INDEX_OUT_OF_BOUNDS | Thrown if the provided index is more than whats supported in a uint256. |
| Category | Description | Reward |
|---|---|---|
| Optimization | Help make this operation more efficient. | 0.5ETH |
| Low severity | Identify a vulnerability in this operation that could lead to an inconvenience for a user of the protocol or for a protocol developer. | 1ETH |
| High severity | Identify a vulnerability in this operation that could lead to data corruption or loss of funds. | 5+ETH |