aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-10-29 13:33:08 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-10-29 13:33:48 +0100
commitffd8c41f36dc38db96bef169dbe2bfe20652d8f8 (patch)
tree69d8834549486396f8be36d5fe14574fe71e707d
parentringct: always shutdown the boost io service (diff)
downloadmonero-ffd8c41f36dc38db96bef169dbe2bfe20652d8f8.tar.xz
ringct: check the size of amount_keys is the same as destinations
-rw-r--r--src/ringct/rctSigs.cpp2
-rw-r--r--tests/unit_tests/ringct.cpp5
-rw-r--r--tests/unit_tests/serialization.cpp1
3 files changed, 6 insertions, 2 deletions
diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp
index 86d98fca2..19e9d291e 100644
--- a/src/ringct/rctSigs.cpp
+++ b/src/ringct/rctSigs.cpp
@@ -610,6 +610,7 @@ namespace rct {
// Thus the amounts vector will be "one" longer than the destinations vectort
rctSig genRct(const key &message, const ctkeyV & inSk, const keyV & destinations, const vector<xmr_amount> & amounts, const ctkeyM &mixRing, const keyV &amount_keys, unsigned int index, ctkeyV &outSk) {
CHECK_AND_ASSERT_THROW_MES(amounts.size() == destinations.size() || amounts.size() == destinations.size() + 1, "Different number of amounts/destinations");
+ CHECK_AND_ASSERT_THROW_MES(amount_keys.size() == destinations.size(), "Different number of amount_keys/destinations");
CHECK_AND_ASSERT_THROW_MES(index < mixRing.size(), "Bad index into mixRing");
for (size_t n = 0; n < mixRing.size(); ++n) {
CHECK_AND_ASSERT_THROW_MES(mixRing[n].size() == inSk.size(), "Bad mixRing size");
@@ -671,6 +672,7 @@ namespace rct {
CHECK_AND_ASSERT_THROW_MES(inamounts.size() > 0, "Empty inamounts");
CHECK_AND_ASSERT_THROW_MES(inamounts.size() == inSk.size(), "Different number of inamounts/inSk");
CHECK_AND_ASSERT_THROW_MES(outamounts.size() == destinations.size(), "Different number of amounts/destinations");
+ CHECK_AND_ASSERT_THROW_MES(amount_keys.size() == destinations.size(), "Different number of amount_keys/destinations");
CHECK_AND_ASSERT_THROW_MES(index.size() == inSk.size(), "Different number of index/inSk");
CHECK_AND_ASSERT_THROW_MES(mixRing.size() == inSk.size(), "Different number of mixRing/inSk");
for (size_t n = 0; n < mixRing.size(); ++n) {
diff --git a/tests/unit_tests/ringct.cpp b/tests/unit_tests/ringct.cpp
index 224e32e61..1abf2511d 100644
--- a/tests/unit_tests/ringct.cpp
+++ b/tests/unit_tests/ringct.cpp
@@ -246,7 +246,6 @@ TEST(ringct, range_proofs_with_fee)
//add txn fee for 1
//has no corresponding destination..
amounts.push_back(1);
- amount_keys.push_back(hash_to_scalar(zero()));
//add output for 12500
amounts.push_back(12500);
@@ -356,10 +355,12 @@ static rct::rctSig make_sample_rct_sig(int n_inputs, const uint64_t input_amount
for (int n = 0; n < n_outputs; ++n) {
amounts.push_back(output_amounts[n]);
- amount_keys.push_back(rct::hash_to_scalar(rct::zero()));
skpkGen(Sk, Pk);
if (n < n_outputs - 1 || !last_is_fee)
+ {
destinations.push_back(Pk);
+ amount_keys.push_back(rct::hash_to_scalar(rct::zero()));
+ }
}
return genRct(rct::zero(), sc, pc, destinations, amounts, amount_keys, 3);;
diff --git a/tests/unit_tests/serialization.cpp b/tests/unit_tests/serialization.cpp
index f51f9ec67..dc7f7cb06 100644
--- a/tests/unit_tests/serialization.cpp
+++ b/tests/unit_tests/serialization.cpp
@@ -559,6 +559,7 @@ TEST(Serialization, serializes_ringct_types)
rct::keyV amount_keys;
//add output 500
amounts.push_back(500);
+ amount_keys.push_back(rct::hash_to_scalar(rct::zero()));
rct::keyV destinations;
rct::key Sk, Pk;
rct::skpkGen(Sk, Pk);