From b325805878d7c26e1c337b8306eee8497b498a23 Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Mon, 12 Oct 2015 18:58:41 -0400 Subject: [PATCH] fix recursion --- libraries/chain/protocol/address.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/libraries/chain/protocol/address.cpp b/libraries/chain/protocol/address.cpp index a93d5683..07c5981f 100644 --- a/libraries/chain/protocol/address.cpp +++ b/libraries/chain/protocol/address.cpp @@ -24,19 +24,12 @@ namespace graphene { FC_ASSERT( is_valid( base58str ) ); std::string prefix( GRAPHENE_ADDRESS_PREFIX ); - // TODO: This is temporary for testing - if( is_valid( base58str, "BTS" ) ) prefix = std::string( "BTS" ); - std::vector v = fc::from_base58( base58str.substr( prefix.size() ) ); memcpy( (char*)addr._hash, v.data(), std::min( v.size()-4, sizeof( addr ) ) ); } bool address::is_valid( const std::string& base58str, const std::string& prefix ) { - // TODO: This is temporary for testing - if( prefix == GRAPHENE_ADDRESS_PREFIX && is_valid( base58str, "BTS" ) ) - return true; - const size_t prefix_len = prefix.size(); if( base58str.size() <= prefix_len ) return false; @@ -45,17 +38,20 @@ namespace graphene { std::vector v; try { - v = fc::from_base58( base58str.substr( prefix_len ) ); - } - catch( const fc::parse_error_exception& e ) - { - return false; - } + v = fc::from_base58( base58str.substr( prefix_len ) ); + } + catch( const fc::parse_error_exception& e ) + { + return false; + } + if( v.size() != sizeof( fc::ripemd160 ) + 4 ) return false; + const fc::ripemd160 checksum = fc::ripemd160::hash( v.data(), v.size() - 4 ); if( memcmp( v.data() + 20, (char*)checksum._hash, 4 ) != 0 ) return false; + return true; }