aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2012-05-04 18:55:15 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2012-05-04 18:55:15 +0000
commitb2e5f797b5670c4dc7d0dfd696d21977575fe9ed (patch)
tree308157c6a728931ff26a8260e204c633e75ead1d /src
parent6a89317f621692e7d5c0c67b3a1440bf1b52b328 (diff)
parentad5a4c7c471912aa0bef52c33a1abfb01fe6d89d (diff)
downloadbitcoin-b2e5f797b5670c4dc7d0dfd696d21977575fe9ed.tar.xz
Merge branch '0.4.x' into 0.5.x
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp10
-rw-r--r--src/serialize.h2
-rw-r--r--src/util.cpp2
-rw-r--r--src/wallet.h1
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);