diff --git a/slither/detectors/functions/modifier.py b/slither/detectors/functions/modifier.py index cfafecda43..80e0f0f443 100644 --- a/slither/detectors/functions/modifier.py +++ b/slither/detectors/functions/modifier.py @@ -17,7 +17,8 @@ def is_revert(node: Node) -> bool: return node.type == NodeType.THROW or any( - ir.function.name in ["revert()", "revert(string"] for ir in node.internal_calls + ir.function.name in ["revert()", "revert(string)"] or ir.function.name.startswith("revert ") + for ir in node.internal_calls ) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_8_4_modifier_reverts_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_8_4_modifier_reverts_sol__0.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol b/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol new file mode 100644 index 0000000000..479b186296 --- /dev/null +++ b/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.8.4; + +contract Test { + address owner; + + error NotOwner(); + + modifier onlyOwnerStr() { + if (msg.sender == owner) { + _; + } else { + revert("not owner"); + } + } + + modifier onlyOwnerErr() { + if (msg.sender == owner) { + _; + } else { + revert NotOwner(); + } + } + + function f() external onlyOwnerStr returns (uint256) { + return 1; + } + + function g() external onlyOwnerErr returns (uint256) { + return 2; + } +} diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol-0.8.4.zip b/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol-0.8.4.zip new file mode 100644 index 0000000000..a1609ff545 Binary files /dev/null and b/tests/e2e/detectors/test_data/incorrect-modifier/0.8.4/modifier_reverts.sol-0.8.4.zip differ diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index 7bd6e34600..bd0cb02847 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -1326,6 +1326,11 @@ def id_test(test_item: Test): "modifier_default.sol", "0.7.6", ), + Test( + all_detectors.ModifierDefaultDetection, + "modifier_reverts.sol", + "0.8.4", + ), Test( all_detectors.IncorrectUnaryExpressionDetection, "invalid_unary_expression.sol",