Randomize the commitment dance order. */
| 71 | |
| 72 | /* Randomize the commitment dance order. */ |
| 73 | static void fuzz_exchange_commits(struct channel *channel, const struct htlc ***changed_htlcs, |
| 74 | const u8 **cursor, size_t *max) |
| 75 | { |
| 76 | int order[] = {0, 1, 2, 3}; |
| 77 | |
| 78 | /* Shuffle the call order using fuzzer data. */ |
| 79 | for (size_t i = ARRAY_SIZE(order) - 1; i > 0 && *max > 0; i--) { |
| 80 | size_t j = fromwire_u8(cursor, max) % (i + 1); |
| 81 | int temp = order[i]; |
| 82 | order[i] = order[j]; |
| 83 | order[j] = temp; |
| 84 | } |
| 85 | |
| 86 | for (size_t i = 0; i < ARRAY_SIZE(order); i++) { |
| 87 | switch (order[i]) { |
| 88 | case 0: |
| 89 | channel_sending_commit(channel, changed_htlcs); |
| 90 | break; |
| 91 | case 1: |
| 92 | channel_rcvd_revoke_and_ack(channel, changed_htlcs); |
| 93 | break; |
| 94 | case 2: |
| 95 | channel_rcvd_commit(channel, changed_htlcs); |
| 96 | break; |
| 97 | case 3: |
| 98 | channel_sending_revoke_and_ack(channel); |
| 99 | break; |
| 100 | } |
| 101 | } |
| 102 | } |
| 103 | |
| 104 | static bool update_feerate(struct channel *channel, u32 feerate) |
| 105 | { |
no test coverage detected