mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
fix: BLS checkMalleable protection (#5240)
<!-- *** Please remove the following help text before submitting: *** Provide a general summary of your changes in the Title above Pull requests without a rationale and clear improvement may be closed immediately. Please provide clear motivation for your patch and explain how it improves Dash Core user experience or Dash Core developer experience significantly: * Any test improvements or new tests that improve coverage are always welcome. * All other changes should have accompanying unit tests (see `src/test/`) or functional tests (see `test/`). Contributors should note which tests cover modified code. If no tests exist for a region of modified code, new tests should accompany the change. * Bug fixes are most welcome when they come with steps to reproduce or an explanation of the potential issue as well as reasoning for the way the bug was fixed. * Features are welcome, but might be rejected due to design or scope issues. If a feature is based on a lot of dependencies, contributors should first consider building the system outside of Dash Core, if possible. --> ## Issue being fixed or feature implemented <!--- Why is this change required? What problem does it solve? --> <!--- If it fixes an open issue, please link to the issue here. --> ## What was done? <!--- Describe your changes in detail --> ## How Has This Been Tested? <!--- Please describe in detail how you tested your changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> ## Breaking Changes <!--- Please describe any breaking changes your code introduces --> ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation **For repository code-owners and collaborators only** - [x] I have assigned this pull request to a milestone --------- Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
This commit is contained in:
parent
b5900767ea
commit
9cbc360f8a
@ -190,7 +190,17 @@ public:
|
||||
SetByteVector(vecBytes, specificLegacyScheme);
|
||||
|
||||
if (checkMalleable && !CheckMalleable(vecBytes, specificLegacyScheme)) {
|
||||
throw std::ios_base::failure("malleable BLS object");
|
||||
// If CheckMalleable failed with specificLegacyScheme, we need to try again with the opposite scheme.
|
||||
// Probably we received the BLS object sent with legacy scheme, but in the meanwhile the fork activated.
|
||||
SetByteVector(vecBytes, !specificLegacyScheme);
|
||||
if (!CheckMalleable(vecBytes, !specificLegacyScheme)) {
|
||||
// Both attempts failed
|
||||
throw std::ios_base::failure("malleable BLS object");
|
||||
} else {
|
||||
// Indeed the received vecBytes was in opposite scheme. But we can't keep it (mixing with the new scheme will lead to undefined behavior)
|
||||
// Therefore, resetting current object (basically marking it as invalid).
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user