Browse Source

replace HaveTxIndex for GetTransaction. this is a more secure check since it also

verifies if tx is part of current main chain. old test may cause problems for people
trying to reregister their usernames in case of reversal attack since nodes might incorrectly
refuse to accept/retransmit the new transaction.
miguelfreitas
Miguel Freitas 11 years ago
parent
commit
19ff320d24
  1. 2
      src/clientversion.h
  2. 10
      src/main.cpp

2
src/clientversion.h

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
// These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 0
#define CLIENT_VERSION_MINOR 9
#define CLIENT_VERSION_REVISION 05
#define CLIENT_VERSION_REVISION 06
#define CLIENT_VERSION_BUILD 0
// Set to true for release, false for prerelease or test build

10
src/main.cpp

@ -493,8 +493,9 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr @@ -493,8 +493,9 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr
{
// do we already have it?
uint256 txid = SerializeHash(make_pair(tx.GetUsername(),-1));
if( pblocktree->HaveTxIndex(txid) &&
CTransaction txOld;
uint256 hashBlock = 0;
if( GetTransaction(tx.GetUsername(), txOld, hashBlock) &&
// duplicate should be discarded but replacement is allowed.
!verifyDuplicateOrReplacementTx(tx, false, true) ) {
return false;
@ -3608,8 +3609,9 @@ static bool CreateSpamMsgTx(CTransaction &txNew, std::vector<unsigned char> &sal @@ -3608,8 +3609,9 @@ static bool CreateSpamMsgTx(CTransaction &txNew, std::vector<unsigned char> &sal
CKeyID keyID;
if( strSpamUser != "nobody" ) {
// check both wallet and block chain if they know about this user
uint256 txid = SerializeHash(make_pair(strSpamUser,-1));
if( !pblocktree->HaveTxIndex(txid) ||
CTransaction txOld;
uint256 hashBlock = 0;
if( !GetTransaction(strSpamUser, txOld, hashBlock) ||
!pwalletMain->GetKeyIdFromUsername(strSpamUser, keyID) ) {
strUsername = "nobody";
}

Loading…
Cancel
Save