WeBankBlockchain/SmartDev-Contract

位操作合约的问题

dalaocu opened this issue · 1 comments

#47

位操作的时候未对参数进行安全检测:

// 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]来实现的。

@LoAcer

fixed in 08ccc5e