Add check for consistency between nActionsOrchard and Orchard flags.
Fixes #5245
This commit is contained in:
parent
c34162d6dd
commit
76aafa0f5f
|
@ -1112,7 +1112,6 @@ bool ContextualCheckTransaction(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// nSpendsSapling, nOutputsSapling, and nActionsOrchard MUST all be less than 2^16
|
// nSpendsSapling, nOutputsSapling, and nActionsOrchard MUST all be less than 2^16
|
||||||
size_t max_elements = (1 << 16) - 1;
|
size_t max_elements = (1 << 16) - 1;
|
||||||
if (tx.vShieldedSpend.size() > max_elements) {
|
if (tx.vShieldedSpend.size() > max_elements) {
|
||||||
|
@ -1134,6 +1133,13 @@ bool ContextualCheckTransaction(
|
||||||
REJECT_INVALID, "bad-tx-too-many-orchard-actions");
|
REJECT_INVALID, "bad-tx-too-many-orchard-actions");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (orchard_bundle.GetNumActions() > 0 && !orchard_bundle.OutputsEnabled() && !orchard_bundle.SpendsEnabled()) {
|
||||||
|
return state.DoS(
|
||||||
|
dosLevelPotentiallyRelaxing,
|
||||||
|
error("ContextualCheckTransaction(): Orchard actions are present, but flags do not permit Orchard spends or outputs"),
|
||||||
|
REJECT_INVALID, "bad-tx-orchard-flags-disable-actions");
|
||||||
|
}
|
||||||
|
|
||||||
if (tx.IsCoinBase()) {
|
if (tx.IsCoinBase()) {
|
||||||
if (!orchard_bundle.CoinbaseOutputsAreValid()) {
|
if (!orchard_bundle.CoinbaseOutputsAreValid()) {
|
||||||
return state.DoS(
|
return state.DoS(
|
||||||
|
|
Loading…
Reference in New Issue