miniscript: Correct off-by-one assert guards

Co-authored-by: Antoine Poinsot <darosior@protonmail.com>
This commit is contained in:
Hodlinator 2025-04-12 09:36:40 +02:00
parent a4fd565191
commit 3693e4d6ee
No known key found for this signature in database

View file

@ -1009,7 +1009,7 @@ private:
next_sats.push_back(sats[sats.size() - 1] + sub->ops.sat); next_sats.push_back(sats[sats.size() - 1] + sub->ops.sat);
sats = std::move(next_sats); sats = std::move(next_sats);
} }
assert(k <= sats.size()); assert(k < sats.size());
return {count, sats[k], sats[0]}; return {count, sats[k], sats[0]};
} }
} }
@ -1177,7 +1177,7 @@ private:
next_sats.push_back(sats[sats.size() - 1] + sub->ws.sat); next_sats.push_back(sats[sats.size() - 1] + sub->ws.sat);
sats = std::move(next_sats); sats = std::move(next_sats);
} }
assert(k <= sats.size()); assert(k < sats.size());
return {sats[k], sats[0]}; return {sats[k], sats[0]};
} }
} }
@ -1227,7 +1227,7 @@ private:
// satisfying 0 keys. // satisfying 0 keys.
auto& nsat{sats[0]}; auto& nsat{sats[0]};
CHECK_NONFATAL(node.k != 0); CHECK_NONFATAL(node.k != 0);
assert(node.k <= sats.size()); assert(node.k < sats.size());
return {std::move(nsat), std::move(sats[node.k])}; return {std::move(nsat), std::move(sats[node.k])};
} }
case Fragment::MULTI: { case Fragment::MULTI: {
@ -1253,7 +1253,7 @@ private:
// The dissatisfaction consists of k+1 stack elements all equal to 0. // The dissatisfaction consists of k+1 stack elements all equal to 0.
InputStack nsat = ZERO; InputStack nsat = ZERO;
for (size_t i = 0; i < node.k; ++i) nsat = std::move(nsat) + ZERO; for (size_t i = 0; i < node.k; ++i) nsat = std::move(nsat) + ZERO;
assert(node.k <= sats.size()); assert(node.k < sats.size());
return {std::move(nsat), std::move(sats[node.k])}; return {std::move(nsat), std::move(sats[node.k])};
} }
case Fragment::THRESH: { case Fragment::THRESH: {
@ -1288,7 +1288,7 @@ private:
// Include all dissatisfactions (even these non-canonical ones) in nsat. // Include all dissatisfactions (even these non-canonical ones) in nsat.
if (i != node.k) nsat = std::move(nsat) | std::move(sats[i]); if (i != node.k) nsat = std::move(nsat) | std::move(sats[i]);
} }
assert(node.k <= sats.size()); assert(node.k < sats.size());
return {std::move(nsat), std::move(sats[node.k])}; return {std::move(nsat), std::move(sats[node.k])};
} }
case Fragment::OLDER: { case Fragment::OLDER: {