位操作合约的问题
dalaocu opened this issue · comments
位操作的时候未对参数进行安全检测:
// Get bit value at position
function getBit(bytes1 a, uint8 n) internal pure returns (bool) {
return a & shiftLeft(0x01, n) != 0;
}
// Set bit value at position
function setBit(bytes1 a, uint8 n) internal pure returns (bytes1) {
return a | shiftLeft(0x01, n);
}
n应该做范围检查。
另外n的移位的文档示例是错误的。实际代码n支持[0,7]移位,但是文档代码中默认是按照[0,7]来实现的。