changeset 2963:2cabaf34b929 draft

Merge branch '0.4.x' into 0.5.x
author Luke Dashjr <luke-jr+git@utopios.org>
date Fri, 04 May 2012 18:55:15 +0000
parents 99dbe4d0478e (current diff) dbcd9f583247 (diff)
children 3fdb45ee3bc2 0f3d6bfac087
files src/main.cpp src/serialize.h src/util.cpp src/wallet.h
diffstat 4 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1502,6 +1502,16 @@
     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"));
--- a/src/serialize.h
+++ b/src/serialize.h
@@ -1245,8 +1245,6 @@
     int nType;
     int nVersion;
 
-    typedef FILE element_type;
-
     CAutoFile(FILE* filenew=NULL, int nTypeIn=SER_DISK, int nVersionIn=VERSION)
     {
         file = filenew;
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -236,7 +236,7 @@
             *pend = '\0';
             char* p1 = pszBuffer;
             char* p2;
-            while (p2 = strchr(p1, '\n'))
+            while ((p2 = strchr(p1, '\n')))
             {
                 p2++;
                 char c = *p2;
--- a/src/wallet.h
+++ b/src/wallet.h
@@ -175,7 +175,6 @@
     }
 
     int LoadWallet(bool& fFirstRunRet);
-//    bool BackupWallet(const std::string& strDest);
 
     bool SetAddressBookName(const CBitcoinAddress& address, const std::string& strName);