Skip to content

[Bug-Candidate]: slither fails to handle overflow literal operations #2646

Open
@lum7na

Description

@lum7na

Describe the issue:

Tests were conducted using solc versions 0.8.27 and 0.8.28, and both failed to generate IR. The bug persists in the latest release.

I believe there should be more robust handling here, as mentioned in the Solidity documentation:

Number literal expressions retain arbitrary precision until they are converted to a non-literal type (i.e. by using them together with anything other than a number literal expression (like boolean literals) or by explicit conversion). This means that computations do not overflow and divisions do not truncate in number literal expressions.

Code:

contract C {
  function test() public returns(int) {
    return (-1) ** 1e100;
  }
}

Run slither: slither a.sol

Output:

ERROR:SlitherSolcParsing:
Failed to generate IR for C.test. Please open an issue https://github.com/crytic/slither/issues.
C.test (a.sol#3-5):
        (- 1) ** 1e100
Traceback (most recent call last):
...
ERROR:root:Error:
ERROR:root:1e100 is too large to fit in any Solidity integer size
ERROR:root:Please report an issue to https://github.com/crytic/slither/issues

Code example to reproduce the issue:

contract C {
  function test() public returns(int) {
    return (-1) ** 1e100;
  }
}

Version:

0.11.0

Relevant log output:

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug-candidateBugs reports that are not yet confirmed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions