crytic / crytic/slither

IndexError thrown when parsing loop where break-statement precedes a continue-statement

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

Description

The following contract causes an index error:
```
contract UnreachableContinue {
function f() public {
while(true) {
break;
continue;
}
}
}
```

Output:
```
ERROR:root:Error in .\unreachable_continue.sol
ERROR:root:Traceback (most recent call last):
File "c:\users\x\documents\github\slither\slither\__main__.py", line 610, in main_impl
(slither_instances, results_detectors, results_printers, number_contracts) = process_all(filename, args,
File "c:\users\x\documents\github\slither\slither\__main__.py", line 67, in process_all
(slither, current_results_detectors, current_results_printers, current_analyzed_count) = process_single(
File "c:\users\x\documents\github\slither\slither\__main__.py", line 57, in process_single
return _process(slither, detector_classes, printer_classes)
File "c:\users\x\documents\github\slither\slither\__main__.py", line 89, in _process
detector_results = slither.run_detectors()
File "c:\users\x\documents\github\slither\slither\slither.py", line 162, in run_detectors
results = [d.detect() for d in self._detectors]
File "c:\users\x\documents\github\slither\slither\slither.py", line 162, in
results = [d.detect() for d in self._detectors]
File "c:\users\x\documents\github\slither\slither\detectors\abstract_detector.py", line 109, in detect
all_results = self._detect()
File "c:\users\x\documents\github\slither-private\slither_priv\detectors\statements\controlled_loop_iteration.py", line 67, in _detect
nodes = self.controlled_loop_iteration(f)
File "c:\users\x\documents\github\slither-private\slither_priv\detectors\statements\controlled_loop_iteration.py", line 51, in controlled_loop_iteration
last_ir = node.irs[-1]
IndexError: list index out of range
```

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.