diff options
| author | Luke Dashjr <[email protected]> | 2012-05-04 18:55:15 +0000 |
|---|---|---|
| committer | Luke Dashjr <[email protected]> | 2012-05-04 18:55:15 +0000 |
| commit | b2e5f797b5670c4dc7d0dfd696d21977575fe9ed (patch) | |
| tree | 308157c6a728931ff26a8260e204c633e75ead1d /src | |
| parent | Check earlier for blocks with duplicate transactions. Fixes #1167 (diff) | |
| parent | Check earlier for blocks with duplicate transactions. Fixes #1167 (diff) | |
| download | discoin-b2e5f797b5670c4dc7d0dfd696d21977575fe9ed.tar.xz discoin-b2e5f797b5670c4dc7d0dfd696d21977575fe9ed.zip | |
Merge branch '0.4.x' into 0.5.x
Diffstat (limited to 'src')
| -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 5f98d4953..ff4e2f0de 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 346594c86..6bdf37822 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 211d1a036..66161c7e5 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 86c8bc818..90ee518ae 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); |