diff options
author | Luke Dashjr <luke-jr+git@utopios.org> | 2012-05-04 18:55:15 +0000 |
---|---|---|
committer | Luke Dashjr <luke-jr+git@utopios.org> | 2012-05-04 18:55:15 +0000 |
commit | b2e5f797b5670c4dc7d0dfd696d21977575fe9ed (patch) | |
tree | 308157c6a728931ff26a8260e204c633e75ead1d | |
parent | 6a89317f621692e7d5c0c67b3a1440bf1b52b328 (diff) | |
parent | ad5a4c7c471912aa0bef52c33a1abfb01fe6d89d (diff) | |
download | bitcoin-b2e5f797b5670c4dc7d0dfd696d21977575fe9ed.tar.xz |
Merge branch '0.4.x' into 0.5.x
-rw-r--r-- | src/main.cpp | 10 | ||||
-rw-r--r-- | src/serialize.h | 2 | ||||
-rw-r--r-- | src/util.cpp | 2 | ||||
-rw-r--r-- | src/wallet.h | 1 |
4 files changed, 11 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 5f98d49530..ff4e2f0ded 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1502,6 +1502,16 @@ bool CBlock::CheckBlock() const if (uniqueTx.size() != vtx.size()) return DoS(100, error("CheckBlock() : duplicate transaction")); + // Check for duplicate txids. This is caught by ConnectInputs(), + // but catching it earlier avoids a potential DoS attack: + set<uint256> uniqueTx; + BOOST_FOREACH(const CTransaction& tx, vtx) + { + uniqueTx.insert(tx.GetHash()); + } + if (uniqueTx.size() != vtx.size()) + return error("CheckBlock() : duplicate transaction"); + // Check that it's not full of nonstandard transactions if (GetSigOpCount() > MAX_BLOCK_SIGOPS) return DoS(100, error("CheckBlock() : out-of-bounds SigOpCount")); diff --git a/src/serialize.h b/src/serialize.h index 346594c86a..6bdf378229 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1245,8 +1245,6 @@ public: int nType; int nVersion; - typedef FILE element_type; - CAutoFile(FILE* filenew=NULL, int nTypeIn=SER_DISK, int nVersionIn=VERSION) { file = filenew; diff --git a/src/util.cpp b/src/util.cpp index 211d1a036f..66161c7e5a 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -236,7 +236,7 @@ inline int OutputDebugStringF(const char* pszFormat, ...) *pend = '\0'; char* p1 = pszBuffer; char* p2; - while (p2 = strchr(p1, '\n')) + while ((p2 = strchr(p1, '\n'))) { p2++; char c = *p2; diff --git a/src/wallet.h b/src/wallet.h index 86c8bc818c..90ee518ae4 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -175,7 +175,6 @@ public: } int LoadWallet(bool& fFirstRunRet); -// bool BackupWallet(const std::string& strDest); bool SetAddressBookName(const CBitcoinAddress& address, const std::string& strName); |