Skip to main content

incorrect-shift

Incorrect shift in assembly​

Usage​

codeql query run codeql-research/solidity/ql/lib/slither-bitshift-order.ql -d /path-to-database/

Description​

Based on Slither's incorrect-shift detector. Detects if the values in a shift operation are reversed.

Recomendation​

Invert the order of call arguments to correctly perform the shift operation.

Example​

Vulnerable​

contract C {
function f() internal returns (uint a) {
assembly {
a := shr(a, 8)
}
}
}

Fixed​

contract C {
function f() internal returns (uint a) {
assembly {
a := shr(8, a)
}
}
}