Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix and typofix #4212

Merged
merged 3 commits into from
May 5, 2020
Merged

Bugfix and typofix #4212

merged 3 commits into from
May 5, 2020

Conversation

dmos62
Copy link
Contributor

@dmos62 dmos62 commented Apr 29, 2020

Two omitted breaks in switch statements and one typo. One of the omitted breaks is serious-ish, info in commit messages.

dmos62 added 3 commits April 29, 2020 21:05
Non-bug; only effect that the other instanceof is always evaluated.
This omission is currently not disruptive, since the next case clause only contains a break. Also converted a few `return false` to breaks, to align with the rest of the switch statement.
Without the break statement, the execution would continue through the subsequent case clauses until it encountered a break, executing `checkArgument` calls meant for `REIMBURSEMENT_MAX_AMOUNT`. More specifically, the bug would cause a failed check in the case where `inputValueAsCoin.value <= 200000000` is false.
Copy link
Member

@sqrrm sqrrm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

@sqrrm sqrrm merged commit 5e9bbfc into bisq-network:master May 5, 2020
@sqrrm
Copy link
Member

sqrrm commented May 5, 2020

@ManfredKarrer I merged too soon. I didn't look at the two commits touching the DAO until after merging. I think it's correct but sensitive stuff.

Copy link
Contributor

@ManfredKarrer ManfredKarrer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NACK

@@ -144,6 +144,7 @@ private void validateBsqValue(Coin currentParamValueAsCoin, Coin inputValueAsCoi
case REIMBURSEMENT_MIN_AMOUNT:
checkArgument(inputValueAsCoin.value >= Restrictions.getMinNonDustOutput().value,
Res.get("validation.amountBelowDust", Restrictions.getMinNonDustOutput().value));
break;
Copy link
Contributor

@ManfredKarrer ManfredKarrer May 5, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the correct version would be:

            case REIMBURSEMENT_MIN_AMOUNT:
            case COMPENSATION_REQUEST_MAX_AMOUNT:
            case REIMBURSEMENT_MAX_AMOUNT:
                checkArgument(inputValueAsCoin.value >= Restrictions.getMinNonDustOutput().value,
                        Res.get("validation.amountBelowDust", Restrictions.getMinNonDustOutput().value));
                checkArgument(inputValueAsCoin.value <= 200000000,
                        Res.get("validation.inputTooLarge", "200 000 BSQ"));
                break;

Also MinAmount must not exceed the 200 000 BSQ.

@@ -285,14 +285,15 @@ private boolean isBtcOutputOfBurnFeeTx(TempTxOutput tempTxOutput) {
// We always have the BSQ change before the burned BSQ output if both are present.
checkArgument(optionalOpReturnIndex.isPresent());
if (index != optionalOpReturnIndex.get() - 1) {
return false;
break;
Copy link
Contributor

@ManfredKarrer ManfredKarrer May 5, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see any problem with that change but as it is a pure "cosmetic" change I prefer to not touch the code. Some could argue the early return is more readable. I don't have a strong opinion and the break is more consistent but evaluating benefit / risk just does not justify the change IMO even it seems a trivial and very low risk change.

}

// Without checking the fee we would not be able to distinguish between 2 structurally same transactions, one
// where the output is burned BSQ and one where it is a BSQ change output.
long blindVoteFee = daoStateService.getParamValueAsCoin(Param.BLIND_VOTE_FEE, tempTxOutput.getBlockHeight()).value;
return availableInputValue == blindVoteFee;
}
break;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the semantic changes in this file are reverted, take care not to revert adding this break.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm doing a revert of the whole PR. There was an easy to use button to do the revert.

Best make a new PR with the good changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants