crytic / crytic/slither

[Bug]: AssertionError for library call on arrays

Open
#1,541 0 comments 0 reactions 0 assignees View on GitHub
bug ir
Dominant language
Python
Stars
6.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

### Describe the issue:

Running the code returns an AssertionError. Same goes for other types of arrays.

### Code example to reproduce the issue:

```solidity
library Lib {
function doSomething(uint8[2] memory) internal {}
}

contract Contract {
using Lib for uint8[2];

function test() public {
[1, 2].doSomething();
}
}
```

possibly related to #1379

### Version:

0.9.1

### Relevant log output:

```shell
AssertionError
Error in .
Traceback (most recent call last):
File "/opt/homebrew/lib/python3.10/site-packages/slither/__main__.py", line 826, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/opt/homebrew/lib/python3.10/site-packages/slither/__main__.py", line 97, in process_all
) = process_single(compilation, args, detector_classes, printer_classes)
File "/opt/homebrew/lib/python3.10/site-packages/slither/__main__.py", line 75, in process_single
slither = Slither(target, ast_format=ast, **vars(args))
File "/opt/homebrew/lib/python3.10/site-packages/slither/slither.py", line 130, in __init__
parser.analyze_contracts()
File "/opt/homebrew/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 500, in analyze_contracts
self._convert_to_slithir()
File "/opt/homebrew/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 685, in _convert_to_slithir
func.generate_slithir_and_analyze()
File "/opt/homebrew/lib/python3.10/site-packages/slither/core/declarations/function.py", line 1705, in generate_slithir_and_analyze
node.slithir_generation()
File "/opt/homebrew/lib/python3.10/site-packages/slither/core/cfg/node.py", line 719, in slithir_generation
self._irs = convert_expression(expression, self)
File "/opt/homebrew/lib/python3.10/site-packages/slither/slithir/convert.py", line 116, in convert_expression
visitor = ExpressionToSlithIR(expression, node)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 141, in __init__
self._visit_expression(self.expression)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/expression/expression.py", line 51, in _visit_expression
self._visit_call_expression(expression)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/expression/expression.py", line 108, in _visit_call_expression
self._visit_expression(expression.called)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/expression/expression.py", line 95, in _visit_expression
self._post_visit(expression)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/expression/expression.py", line 289, in _post_visit
self._post_member_access(expression)
File "/opt/homebrew/lib/python3.10/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 468, in _post_member_access
member = Member(expr, Constant(expression.member_name), val)
File "/opt/homebrew/lib/python3.10/site-packages/slither/slithir/operations/member.py", line 26, in __init__
assert is_valid_rvalue(variable_left) or isinstance(
AssertionError
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.