fix(fuzz): derive pass-selection mask from default pass count#146
Merged
Conversation
The hardcoded % 8 mask only generated 3-bit values, leaving the fourth default pass (string_obfuscate) unreachable through the randomized pass-selection path. Compute the mask limit from DEFAULT_PASSES so every default pass is selectable, and add a regression test.
Contributor
Decompile Diff AnalysisStatistics (50 iterations)
Full Diff Output─── Storage ───
@@ -1,16 +1,21 @@
- uint256 public constant tokenContract = 0;
- uint256 public constant expectedAmount = 0;
- uint256 public constant unresolved_3d2691bc = 256;
- uint256 public constant unresolved_8677ab23 = 0;
+ bytes32 store_c;
+ bool public unresolved_9c8a34e7;
+ bytes32 store_o;
+ bytes32 store_m;
+ bytes32 store_p;
+ bytes32 store_j;
+ uint256 store_k;
+ bytes32 store_a;
+ bytes32 store_h;
+ uint256 public unresolved_fa1a730f;
+ bytes32 store_e;
+ bytes32 store_i;
+ bytes32 store_g;
+ uint256 public unresolved_b886398c;
+ bytes32 store_n;
+ bytes32 store_q;
+ bytes32 store_r;
+ uint256 public unresolved_d7514581;
- uint256 public unresolved_8bd03d0a;
- uint256 public executionDeadline;
- uint256 public bondAmount;
- bool public unresolved_308657d7;
- uint256 public totalBondsDeposited;
- uint256 public unresolved_d415b3f9;
- uint256 public currentRewardAmount;
- address public unresolved_1aa7c0ec;
-
- error InvalidRLPList();
+ error CustomError_00000000();
─── Function withdraw (0x3ccfd60b → 0x52bcd630) ───
@@ -1,40 +1,43 @@
- /// @custom:selector 0x3ccfd60b
- /// @custom:signature withdraw() public payable
- function withdraw() public payable {
+ /// @custom:selector 0x52bcd630
+ /// @custom:signature Unresolved_52bcd630(uint256 arg0) public payable
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_52bcd630(uint256 arg0) public payable {
+ require(0xd6 == msg.data[0]);
+ require(0 == 0x01);
require(msg.value);
require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
- require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_618bbdd5());
- require(msg.sender - 0, CustomError_618bbdd5());
- var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
- require(executionDeadline, CustomError_9cbc1de1());
- require(!(block.timestamp > executionDeadline), CustomError_9cbc1de1());
+ require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_9e74422b());
+ require(msg.sender - 0, CustomError_9e74422b());
+ var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+ require(unresolved_fa1a730f, CustomError_9cbc1de1());
+ require(!(block.timestamp > unresolved_fa1a730f), CustomError_9cbc1de1());
var_a = 0x9cbc1de100000000000000000000000000000000000000000000000000000000;
- unresolved_1aa7c0ec = uint96(unresolved_1aa7c0ec);
- bondAmount = 0;
- executionDeadline = 0;
- require(unresolved_8bd03d0a > (unresolved_8bd03d0a + unresolved_d415b3f9));
+ store_g = uint96(store_g);
+ store_a = 0;
+ unresolved_fa1a730f = 0;
+ require(store_k > (store_k + unresolved_b886398c));
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
- unresolved_308657d7 = uint248(unresolved_308657d7);
- unresolved_8bd03d0a = 0;
- currentRewardAmount = 0;
- require(!unresolved_8bd03d0a + unresolved_d415b3f9);
+ unresolved_9c8a34e7 = uint248(unresolved_9c8a34e7);
+ store_k = 0;
+ unresolved_d7514581 = 0;
+ require(!store_k + unresolved_b886398c);
var_c = 0xa9059cbb00000000000000000000000000000000000000000000000000000000;
address var_d = msg.sender;
- uint256 var_e = unresolved_8bd03d0a + unresolved_d415b3f9;
+ uint256 var_e = store_k + unresolved_b886398c;
(bool success, bytes memory ret0) = address(0).Unresolved_a9059cbb(var_d); // call
require(!0, CustomError_045c4b02());
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
- require(0x20 > ret0.length);
- require(((var_f + 0x20) > 0xffffffffffffffff) | ((var_f + 0x20) < var_f));
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require(0x20 > ret0.length, CustomError_b1b7848f());
+ require(((var_f + 0x20) > 0xffffffffffffffff) | ((var_f + 0x20) < var_f), CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
var_b = 0x41;
uint256 var_f = var_f + 0x20;
require(((var_f + 0x20) - var_f) < 0x20);
require(var_f.length - var_f.length, CustomError_045c4b02());
require(!var_f.length, CustomError_045c4b02());
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
var_a = 0x53cd7f7900000000000000000000000000000000000000000000000000000000;
var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
}
─── Function fund (0xa65e2cfd → 0xdb2e21af) ───
@@ -1,41 +1,43 @@
- /// @custom:selector 0xa65e2cfd
- /// @custom:signature fund(uint256 arg0, uint256 arg1) public payable
+ /// @custom:selector 0xdb2e21af
+ /// @custom:signature Unresolved_db2e21af(uint256 arg0, uint256 arg1) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
- function fund(uint256 arg0, uint256 arg1) public payable {
+ function Unresolved_db2e21af(uint256 arg0, uint256 arg1) public payable {
+ require(!store_n);
+ require(0 == 0x01);
require(msg.value);
- require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40, CustomError_618bbdd5());
- require(msg.sender - 0, CustomError_618bbdd5());
- var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
- require(bytes1(unresolved_308657d7 >> 0x08), CustomError_5adf6387());
- var_a = 0x5adf638700000000000000000000000000000000000000000000000000000000;
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40, CustomError_9e74422b());
+ require(msg.sender - 0, CustomError_9e74422b());
+ var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+ require(bytes1(unresolved_9c8a34e7 >> 0x08), CustomError_adab89e1());
+ var_a = 0xadab89e100000000000000000000000000000000000000000000000000000000;
require(!arg0);
require(!arg1);
- currentRewardAmount = arg0;
- unresolved_d415b3f9 = arg0;
- unresolved_8bd03d0a = arg1;
- require(unresolved_d415b3f9 > (unresolved_d415b3f9 + unresolved_8bd03d0a));
+ unresolved_d7514581 = arg0;
+ unresolved_b886398c = arg0;
+ store_k = arg1;
+ require(unresolved_b886398c > (unresolved_b886398c + store_k));
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
var_c = 0x23b872dd00000000000000000000000000000000000000000000000000000000;
address var_d = msg.sender;
address var_e = address(this);
- uint256 var_f = unresolved_d415b3f9 + unresolved_8bd03d0a;
+ uint256 var_f = unresolved_b886398c + store_k;
(bool success, bytes memory ret0) = address(0).Unresolved_23b872dd(var_d); // call
require(!0, CustomError_045c4b02());
- unresolved_308657d7 = (uint248(unresolved_308657d7)) | 0x0100;
+ unresolved_9c8a34e7 = (uint248(unresolved_9c8a34e7)) | 0x0100;
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
- require(0x20 > ret0.length);
- require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g));
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require(0x20 > ret0.length, CustomError_b1b7848f());
+ require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g), CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
var_b = 0x41;
uint256 var_g = var_g + 0x20;
require(((var_g + 0x20) - var_g) < 0x20);
require(var_g.length - var_g.length, CustomError_045c4b02());
require(!var_g.length, CustomError_045c4b02());
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
- unresolved_308657d7 = (uint248(unresolved_308657d7)) | 0x0100;
+ unresolved_9c8a34e7 = (uint248(unresolved_9c8a34e7)) | 0x0100;
var_a = 0x932ca0a300000000000000000000000000000000000000000000000000000000;
var_a = 0xea1083a700000000000000000000000000000000000000000000000000000000;
}
─── Function Unresolved_ede7f6a3 (0xede7f6a3 → 0x3a58f686) ───
@@ -1,77 +1,80 @@
- /// @custom:selector 0xede7f6a3
- /// @custom:signature Unresolved_ede7f6a3(uint256 arg0, uint256 arg1) public view
+
+ /// @custom:selector 0x3a58f686
+ /// @custom:signature Unresolved_3a58f686(uint256 arg0, uint256 arg1) public view
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
- function Unresolved_ede7f6a3(uint256 arg0, uint256 arg1) public view {
+ function Unresolved_3a58f686(uint256 arg0, uint256 arg1) public view {
+ require(0xf6 == msg.data[0]);
+ require(0 == 0x01);
require(msg.value);
require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40);
require(arg0 > 0xffffffffffffffff);
require(((msg.data.length - arg0) + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) < 0xa0);
require(arg0 + (arg0) > 0xffffffffffffffff);
- require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_ded7c80c());
- require(msg.sender == (address(unresolved_1aa7c0ec)), CustomError_ded7c80c());
- require(!(msg.sender == (address(unresolved_1aa7c0ec))), CustomError_ded7c80c());
- var_a = 0xded7c80c00000000000000000000000000000000000000000000000000000000;
+ require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_212837f4());
+ require(msg.sender == (address(store_g)), CustomError_212837f4());
+ require(!(msg.sender == (address(store_g))), CustomError_212837f4());
+ var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
require(arg1 > block.number, CustomError_58968cf0());
var_a = 0x58968cf000000000000000000000000000000000000000000000000000000000;
- require((block.number - arg1) > block.number, CustomError_c42a0185());
+ require((block.number - arg1) > block.number, CustomError_3bd5fe7b());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
- require((block.number - arg1) > 0x0100, CustomError_c42a0185());
- var_a = 0xc42a018500000000000000000000000000000000000000000000000000000000;
- require(!blockhash(arg1), CustomError_31aed5c2());
- require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_31aed5c2());
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require((block.number - arg1) > 0x0100, CustomError_3bd5fe7b());
+ var_a = 0x3bd5fe7b00000000000000000000000000000000000000000000000000000000;
+ require(!blockhash(arg1), CustomError_b1b7848f());
+ require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
var_b = 0x41;
- require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_31aed5c2());
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
var_b = 0x41;
uint256 var_c = var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f));
uint256 var_d = (arg0 + (arg0));
var_e = msg.data[36:36];
uint256 var_f = 0;
- require(keccak256(var_e) - blockhash(arg1), CustomError_31aed5c2());
- require(!(arg0 + (arg0)), CustomError_31aed5c2());
- require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_31aed5c2());
- require(!(arg0 + (arg0)), CustomError_31aed5c2());
- require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_31aed5c2());
- require(!(0 < (arg0 + (arg0))), CustomError_31aed5c2());
- require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_31aed5c2());
- require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_31aed5c2());
+ require(keccak256(var_e) - blockhash(arg1), CustomError_4ee3f91f());
+ require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+ require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+ require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+ require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+ require(!(0 < (arg0 + (arg0))), CustomError_4ee3f91f());
+ require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_4ee3f91f());
+ require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_4ee3f91f());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
- require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_31aed5c2());
+ require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_4ee3f91f());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
- require(!(block.chainid == 0xa5bd), CustomError_31aed5c2());
- require(block.chainid == 0xa5bd, CustomError_31aed5c2());
- require(0 < 0x03, CustomError_31aed5c2());
- require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_31aed5c2());
- require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_31aed5c2());
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+ require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+ require(0 < 0x03, CustomError_4ee3f91f());
+ require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+ require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
var_b = 0x32;
var_a = 0x31aed5c200000000000000000000000000000000000000000000000000000000;
if (0 < 0x08) {
}
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_b = 0x11;
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
var_b = 0x32;
if (!block.chainid == 0xa5bd) {
if (block.chainid == 0xa5bd) {
- require(!(block.chainid == 0xa5bd), CustomError_c0098bd9());
+ require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
}
- require(block.chainid == 0xa5bd, CustomError_c0098bd9());
+ require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
}
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
var_b = 0x32;
var_a = 0xc0098bd900000000000000000000000000000000000000000000000000000000;
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
var_b = 0x32;
var_a = 0xff28378700000000000000000000000000000000000000000000000000000000;
var_a = 0xbfc9f0d300000000000000000000000000000000000000000000000000000000;
- require(executionDeadline, CustomError_ded7c80c());
- require(!(!block.timestamp > executionDeadline), CustomError_ded7c80c());
- var_a = 0xded7c80c00000000000000000000000000000000000000000000000000000000;
+ require(unresolved_fa1a730f, CustomError_212837f4());
+ require(!(!block.timestamp > unresolved_fa1a730f), CustomError_212837f4());
+ var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
}
─── Function bond (0x9940686e → 0x89bf6826) ───
@@ -1,54 +1,56 @@
- /// @custom:selector 0x9940686e
- /// @custom:signature bond(uint256 arg0) public payable
+ /// @custom:selector 0x89bf6826
+ /// @custom:signature Unresolved_89bf6826(uint256 arg0) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
- function bond(uint256 arg0) public payable {
+ function Unresolved_89bf6826(uint256 arg0) public payable {
+ require(0x68 == msg.data[0]);
+ require(0 == 0x01);
require(msg.value);
- require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x20, CustomError_253ef1d2());
- require(executionDeadline, CustomError_253ef1d2());
- require(block.timestamp > executionDeadline, CustomError_253ef1d2());
- require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_253ef1d2());
- require(bytes1(unresolved_308657d7), CustomError_253ef1d2());
- require(executionDeadline, CustomError_253ef1d2());
- require(!(block.timestamp > executionDeadline), CustomError_253ef1d2());
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x20, CustomError_24793289());
+ require(unresolved_fa1a730f, CustomError_24793289());
+ require(block.timestamp > unresolved_fa1a730f, CustomError_24793289());
+ require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_24793289());
+ require(bytes1(unresolved_9c8a34e7), CustomError_24793289());
+ var_a = 0x2479328900000000000000000000000000000000000000000000000000000000;
+ require(unresolved_fa1a730f, CustomError_253ef1d2());
+ require(!(block.timestamp > unresolved_fa1a730f), CustomError_253ef1d2());
var_a = 0x253ef1d200000000000000000000000000000000000000000000000000000000;
- require((currentRewardAmount >> 0x01) > arg0, CustomError_e92c469f());
+ require((unresolved_d7514581 >> 0x01) > arg0, CustomError_e92c469f());
var_a = 0xe92c469f00000000000000000000000000000000000000000000000000000000;
var_b = 0x23b872dd00000000000000000000000000000000000000000000000000000000;
address var_c = msg.sender;
address var_d = address(this);
uint256 var_e = arg0;
(bool success, bytes memory ret0) = address(0).Unresolved_23b872dd(var_c); // call
require(!0, CustomError_045c4b02());
- unresolved_1aa7c0ec = (uint96(unresolved_1aa7c0ec)) | msg.sender;
+ store_g = (uint96(store_g)) | msg.sender;
require(block.timestamp > (block.timestamp + 0x012c), CustomError_045c4b02());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_f = 0x11;
- executionDeadline = block.timestamp + 0x012c;
- bondAmount = arg0;
+ unresolved_fa1a730f = block.timestamp + 0x012c;
+ store_a = arg0;
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
- require(0x20 > ret0.length);
- require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g));
- var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ require(0x20 > ret0.length, CustomError_b1b7848f());
+ require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g), CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
var_f = 0x41;
uint256 var_g = var_g + 0x20;
require(((var_g + 0x20) - var_g) < 0x20);
require(var_g.length - var_g.length, CustomError_045c4b02());
require(!var_g.length, CustomError_045c4b02());
var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
- var_a = 0x2479328900000000000000000000000000000000000000000000000000000000;
var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
- require(currentRewardAmount > (currentRewardAmount + bondAmount), CustomError_9cbc1de1());
+ require(unresolved_d7514581 > (unresolved_d7514581 + store_a), CustomError_9cbc1de1());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_f = 0x11;
- currentRewardAmount = currentRewardAmount + bondAmount;
- require(totalBondsDeposited > (totalBondsDeposited + bondAmount), CustomError_9cbc1de1());
+ unresolved_d7514581 = unresolved_d7514581 + store_a;
+ require(store_h > (store_h + store_a), CustomError_9cbc1de1());
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
var_f = 0x11;
- totalBondsDeposited = totalBondsDeposited + bondAmount;
- require(executionDeadline, CustomError_9cbc1de1());
- require(!(block.timestamp > executionDeadline), CustomError_9cbc1de1());
+ store_h = store_h + store_a;
+ require(unresolved_fa1a730f, CustomError_9cbc1de1());
+ require(!(block.timestamp > unresolved_fa1a730f), CustomError_9cbc1de1());
var_a = 0x9cbc1de100000000000000000000000000000000000000000000000000000000;
- if (executionDeadline) {
+ if (unresolved_fa1a730f) {
}
}
─── Function resume (0x046f7da2 → 0x42dad26a) ───
@@ -1,10 +1,12 @@
- /// @custom:selector 0x046f7da2
- /// @custom:signature resume() public payable
- function resume() public payable {
+ /// @custom:selector 0x42dad26a
+ /// @custom:signature Unresolved_42dad26a() public payable
+ function Unresolved_42dad26a() public payable {
+ require(!store_o);
+ require(0 == 0x01);
require(msg.value);
require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
- require(msg.sender - 0, CustomError_618bbdd5());
- var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
- unresolved_308657d7 = uint248(unresolved_308657d7);
+ require(msg.sender - 0, CustomError_9e74422b());
+ var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+ unresolved_9c8a34e7 = uint248(unresolved_9c8a34e7);
}
─── Function requestCancellation (0x81972d00 → 0xd4e2a392) ───
@@ -1,10 +1,12 @@
- /// @custom:selector 0x81972d00
- /// @custom:signature requestCancellation() public payable
- function requestCancellation() public payable {
+ /// @custom:selector 0xd4e2a392
+ /// @custom:signature Unresolved_d4e2a392() public payable
+ function Unresolved_d4e2a392() public payable {
+ require(!store_p);
+ require(0 == 0x01);
require(msg.value);
require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
- require(msg.sender - 0, CustomError_618bbdd5());
- var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
- unresolved_308657d7 = 0x01 | (uint248(unresolved_308657d7));
+ require(msg.sender - 0, CustomError_9e74422b());
+ var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+ unresolved_9c8a34e7 = 0x01 | (uint248(unresolved_9c8a34e7));
}
─── Added: Unresolved_551f4e0f (0x551f4e0f) ───
@@ -1,0 +1,17 @@
+
+ /// @custom:selector 0x551f4e0f
+ /// @custom:signature Unresolved_551f4e0f(uint256 arg0) public pure returns (uint256)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_551f4e0f(uint256 arg0) public pure returns (uint256) {
+ require(0x55 == msg.data[0]);
+ require(0 == 0x01);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ uint256 var_a = 0;
+ return 0;
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ var_a = 0;
+ return 0;
+ }
─── Added: Unresolved_b975ddd8 (0xb975ddd8) ───
@@ -1,0 +1,86 @@
+
+ /// @custom:selector 0xb975ddd8
+ /// @custom:signature Unresolved_b975ddd8(uint256 arg0, uint256 arg1) public view returns (uint256)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ /// @param arg1 ["uint256", "bytes32", "int256"]
+ function Unresolved_b975ddd8(uint256 arg0, uint256 arg1) public view returns (uint256) {
+ require(!store_m);
+ require(0 == 0x01);
+ require(0xf6 == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40);
+ require(arg0 > 0xffffffffffffffff);
+ require(((msg.data.length - arg0) + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) < 0xa0);
+ require(arg0 + (arg0) > 0xffffffffffffffff);
+ require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_212837f4());
+ require(msg.sender == (address(store_g)), CustomError_212837f4());
+ require(!(msg.sender == (address(store_g))), CustomError_212837f4());
+ var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
+ require(arg1 > block.number, CustomError_58968cf0());
+ var_a = 0x58968cf000000000000000000000000000000000000000000000000000000000;
+ require((block.number - arg1) > block.number, CustomError_3bd5fe7b());
+ var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_b = 0x11;
+ require((block.number - arg1) > 0x0100, CustomError_3bd5fe7b());
+ var_a = 0x3bd5fe7b00000000000000000000000000000000000000000000000000000000;
+ require(!blockhash(arg1), CustomError_b1b7848f());
+ require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x41;
+ require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_b1b7848f());
+ var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x41;
+ uint256 var_c = var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f));
+ uint256 var_d = (arg0 + (arg0));
+ var_e = msg.data[36:36];
+ uint256 var_f = 0;
+ require(keccak256(var_e) - blockhash(arg1), CustomError_4ee3f91f());
+ require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+ require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+ require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+ require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+ require(!(0 < (arg0 + (arg0))), CustomError_4ee3f91f());
+ require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_4ee3f91f());
+ require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_4ee3f91f());
+ var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_b = 0x11;
+ require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_4ee3f91f());
+ var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_b = 0x11;
+ require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+ require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+ require(0 < 0x03, CustomError_4ee3f91f());
+ require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+ require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x32;
+ var_a = 0x31aed5c200000000000000000000000000000000000000000000000000000000;
+ if (0 < 0x08) {
+ }
+ var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+ var_b = 0x11;
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x32;
+ if (!block.chainid == 0xa5bd) {
+ if (block.chainid == 0xa5bd) {
+ require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+ }
+ require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+ }
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x32;
+ var_a = 0xc0098bd900000000000000000000000000000000000000000000000000000000;
+ var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+ var_b = 0x32;
+ var_a = 0xff28378700000000000000000000000000000000000000000000000000000000;
+ var_a = 0xbfc9f0d300000000000000000000000000000000000000000000000000000000;
+ require(unresolved_fa1a730f, CustomError_212837f4());
+ require(!(!block.timestamp > unresolved_fa1a730f), CustomError_212837f4());
+ var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
+ var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ var_d = store_k;
+ return store_k;
+ }
─── Added: Unresolved_9a93f6fa (0x9a93f6fa) ───
@@ -1,0 +1,11 @@
+
+ /// @custom:selector 0x9a93f6fa
+ /// @custom:signature Unresolved_9a93f6fa() public view returns (uint256)
+ function Unresolved_9a93f6fa() public view returns (uint256) {
+ require(!store_r);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ var_a = 0x0100;
+ return 0x0100;
+ }
─── Added: Unresolved_3004ea5d (0x3004ea5d) ───
@@ -1,0 +1,12 @@
+
+ /// @custom:selector 0x3004ea5d
+ /// @custom:signature Unresolved_3004ea5d(uint256 arg0) public view returns (bool)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_3004ea5d(uint256 arg0) public view returns (bool) {
+ require(0x30 == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ bytes1 var_a = !(!bytes1(unresolved_9c8a34e7));
+ return !(!bytes1(unresolved_9c8a34e7));
+ }
─── Added: Unresolved_cb44366b (0xcb44366b) ───
@@ -1,0 +1,16 @@
+
+ /// @custom:selector 0xcb44366b
+ /// @custom:signature Unresolved_cb44366b(uint256 arg0) public view returns (bool)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_cb44366b(uint256 arg0) public view returns (bool) {
+ require(0xcb == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ if (unresolved_fa1a730f) {
+ uint256 var_a = !(block.timestamp > unresolved_fa1a730f);
+ return !(block.timestamp > unresolved_fa1a730f);
+ var_a = unresolved_fa1a730f;
+ return unresolved_fa1a730f;
+ }
+ }
─── Added: Unresolved_9d9ac066 (0x9d9ac066) ───
@@ -1,0 +1,12 @@
+
+ /// @custom:selector 0x9d9ac066
+ /// @custom:signature Unresolved_9d9ac066(uint256 arg0) public view returns (address)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_9d9ac066(uint256 arg0) public view returns (address) {
+ require(0xc0 == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ address var_a = address(store_g);
+ return address(store_g);
+ }
─── Added: Unresolved_8a552369 (0x8a552369) ───
@@ -1,0 +1,11 @@
+ /// @custom:selector 0x8a552369
+ /// @custom:signature Unresolved_8a552369(uint256 arg0) public view returns (uint256)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_8a552369(uint256 arg0) public view returns (uint256) {
+ require(0x23 == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ var_a = store_a;
+ return store_a;
+ }
─── Added: Unresolved_865cdb2a (0x865cdb2a) ───
@@ -1,0 +1,12 @@
+
+ /// @custom:selector 0x865cdb2a
+ /// @custom:signature Unresolved_865cdb2a(uint256 arg0) public pure returns (uint256)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_865cdb2a(uint256 arg0) public pure returns (uint256) {
+ require(0x86 == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ uint256 var_a = 0;
+ return 0;
+ }
─── Added: Unresolved_feec7717 (0xfeec7717) ───
@@ -1,0 +1,12 @@
+
+ /// @custom:selector 0xfeec7717
+ /// @custom:signature Unresolved_feec7717(uint256 arg0) public view returns (uint256)
+ /// @param arg0 ["uint256", "bytes32", "int256"]
+ function Unresolved_feec7717(uint256 arg0) public view returns (uint256) {
+ require(0xfe == msg.data[0]);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ var_a = store_h;
+ return store_h;
+ }
─── Added: Unresolved_4fb06e63 (0x4fb06e63) ───
@@ -1,0 +1,11 @@
+
+ /// @custom:selector 0x4fb06e63
+ /// @custom:signature Unresolved_4fb06e63() public view returns (uint256)
+ function Unresolved_4fb06e63() public view returns (uint256) {
+ require(!store_e);
+ require(0 == 0x01);
+ require(msg.value);
+ require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+ uint256 var_a = 0;
+ return 0;
+ }
Commit c4b5e1b |
g4titanx
approved these changes
May 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rng.next_u32() % 8mask with a limit derived from the number of entries inDEFAULT_PASSES, so every default pass (including the previously unreachablestring_obfuscate) can be selected by the fuzzer.passes_from_bitsto takeu32to match the new mask range.Motivation
Closes #145. The default pass list contains four passes, but
% 8only yields values in0..7, so bit 3 (the fourth pass,string_obfuscate) was never set in randomized selection. That narrowed fuzzing coverage relative to the documented default transform set.Changes
crates/cli/src/commands/fuzz.rs: introducedefault_pass_count/pass_mask_limithelpers; use the derived limit in the worker loop; addtestsmodule withfuzz_pass_selection_can_reach_every_default_passandpass_mask_limit_covers_all_default_passes.Out of scope
The issue also raises the broader
--check-deployvs runtime-equivalence boundary. That is intentionally not addressed here so this PR stays focused on the concrete pass-selection bug; it can be tracked as a follow-up.Test plan
cargo test -p azoth-cli --lib commands::fuzz::testscargo clippy -p azoth-cli --all-targets -- -D warningscargo fmt --check