From 36e155bc0c4abb2b3a1f592010c6b05c74df0968 Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Tue, 28 Jul 2015 15:08:46 -0400 Subject: [PATCH] Implement tx_duplicate_sig exception, fix committee_authority test --- libraries/chain/include/graphene/chain/exceptions.hpp | 4 ++-- libraries/chain/protocol/transaction.cpp | 5 ++++- tests/tests/authority_tests.cpp | 1 + tests/tests/block_tests.cpp | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libraries/chain/include/graphene/chain/exceptions.hpp b/libraries/chain/include/graphene/chain/exceptions.hpp index 5479fcc7b4..228e218a25 100644 --- a/libraries/chain/include/graphene/chain/exceptions.hpp +++ b/libraries/chain/include/graphene/chain/exceptions.hpp @@ -74,8 +74,8 @@ namespace graphene { namespace chain { FC_DECLARE_DERIVED_EXCEPTION( tx_missing_owner_auth, graphene::chain::transaction_exception, 3030002, "missing required owner authority" ) FC_DECLARE_DERIVED_EXCEPTION( tx_missing_other_auth, graphene::chain::transaction_exception, 3030003, "missing required other authority" ) FC_DECLARE_DERIVED_EXCEPTION( tx_irrelevant_sig, graphene::chain::transaction_exception, 3030004, "irrelevant signature included" ) - FC_DECLARE_DERIVED_EXCEPTION( invalid_committee_approval, graphene::chain::transaction_exception, 3030005, - "committee account cannot directly approve transaction" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_duplicate_sig, graphene::chain::transaction_exception, 3030005, "duplicate signature included" ) + FC_DECLARE_DERIVED_EXCEPTION( invalid_committee_approval, graphene::chain::transaction_exception, 3030006, "committee account cannot directly approve transaction" ) FC_DECLARE_DERIVED_EXCEPTION( invalid_pts_address, graphene::chain::utility_exception, 3060001, "invalid pts address" ) FC_DECLARE_DERIVED_EXCEPTION( insufficient_feeds, graphene::chain::chain_exception, 37006, "insufficient feeds" ) diff --git a/libraries/chain/protocol/transaction.cpp b/libraries/chain/protocol/transaction.cpp index bdf7da27b3..dad367c8d4 100644 --- a/libraries/chain/protocol/transaction.cpp +++ b/libraries/chain/protocol/transaction.cpp @@ -241,7 +241,10 @@ flat_set signed_transaction::get_signature_keys()const flat_set result; for( const auto& sig : signatures ) { - FC_ASSERT( result.insert( fc::ecc::public_key(sig,d) ).second, "Duplicate Signature detected" ); + GRAPHENE_ASSERT( + result.insert( fc::ecc::public_key(sig,d) ).second, + tx_duplicate_sig, + "Duplicate Signature detected" ); } return result; } FC_CAPTURE_AND_RETHROW() } diff --git a/tests/tests/authority_tests.cpp b/tests/tests/authority_tests.cpp index 96adab1cb8..674844c3eb 100644 --- a/tests/tests/authority_tests.cpp +++ b/tests/tests/authority_tests.cpp @@ -462,6 +462,7 @@ BOOST_AUTO_TEST_CASE( committee_authority ) BOOST_CHECK_EQUAL(get_balance(nathan, asset_id_type()(db)), 0); BOOST_CHECK(db.get(prop.id).is_authorized_to_execute(db)); + trx.signatures.clear(); generate_blocks(*prop.review_period_time); uop.key_approvals_to_add.clear(); uop.key_approvals_to_add.insert(committee_key.get_public_key()); // was 7 diff --git a/tests/tests/block_tests.cpp b/tests/tests/block_tests.cpp index df8b6bf6c0..59c90265cb 100644 --- a/tests/tests/block_tests.cpp +++ b/tests/tests/block_tests.cpp @@ -621,7 +621,7 @@ BOOST_FIXTURE_TEST_CASE( double_sign_check, database_fixture ) BOOST_TEST_MESSAGE( "Verify that double-signing causes an exception" ); trx.sign(bob_private_key); trx.sign(bob_private_key); - GRAPHENE_REQUIRE_THROW( db.push_transaction(trx, 0), fc::exception ); + GRAPHENE_REQUIRE_THROW( db.push_transaction(trx, 0), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "Verify that signing with an extra, unused key fails" ); trx.signatures.pop_back();