diff options
| author | Riccardo Spagni <ric@spagni.net> | 2017-11-14 15:20:45 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2017-11-14 15:20:45 +0200 |
| commit | 25b97ee93742daaa41dd81d81e8a0ac1204b078e (patch) | |
| tree | ea6a83679e2ff3174b6a78bb3bb21152e50671dd /src/simplewallet/simplewallet.cpp | |
| parent | 4754390725cdb4358ad302e4dc09b6a88e5e6d54 (diff) | |
| parent | 2677ade5023a05e97375ee3d97e2c4aab6c54b8f (diff) | |
| download | monzero-core-25b97ee93742daaa41dd81d81e8a0ac1204b078e.tar.gz monzero-core-25b97ee93742daaa41dd81d81e8a0ac1204b078e.tar.xz monzero-core-25b97ee93742daaa41dd81d81e8a0ac1204b078e.zip | |
Merge pull request #2624
2677ade5 simplewallet: forbid 0 ring size (moneromooo-monero)
da8b60cb simplewallet: reject attempts to use too low mixin early (moneromooo-monero)
Diffstat (limited to 'src/simplewallet/simplewallet.cpp')
| -rw-r--r-- | src/simplewallet/simplewallet.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 24e7d54dd..f1a3aac51 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -2585,12 +2585,23 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector<std::stri if (fake_outs_count == 0) fake_outs_count = DEFAULT_MIX; } + else if (ring_size == 0) + { + fail_msg_writer() << tr("Ring size must not be 0"); + return true; + } else { fake_outs_count = ring_size - 1; local_args.erase(local_args.begin()); } } + uint64_t adjusted_fake_outs_count = m_wallet->adjust_mixin(fake_outs_count); + if (adjusted_fake_outs_count > fake_outs_count) + { + fail_msg_writer() << (boost::format(tr("ring size %u is too small, minimum is %u")) % (fake_outs_count+1) % (adjusted_fake_outs_count+1)).str(); + return true; + } const size_t min_args = (transfer_type == TransferLocked) ? 3 : 2; if(local_args.size() < min_args) @@ -3190,12 +3201,23 @@ bool simple_wallet::sweep_main(uint64_t below, const std::vector<std::string> &a if (fake_outs_count == 0) fake_outs_count = DEFAULT_MIX; } + else if (ring_size == 0) + { + fail_msg_writer() << tr("Ring size must not be 0"); + return true; + } else { fake_outs_count = ring_size - 1; local_args.erase(local_args.begin()); } } + uint64_t adjusted_fake_outs_count = m_wallet->adjust_mixin(fake_outs_count); + if (adjusted_fake_outs_count > fake_outs_count) + { + fail_msg_writer() << (boost::format(tr("ring size %u is too small, minimum is %u")) % (fake_outs_count+1) % (adjusted_fake_outs_count+1)).str(); + return true; + } std::vector<uint8_t> extra; bool payment_id_seen = false; |
