Browse Source

SigOp and orphan-tx constants and counts are always unsigned.

Fixes several sign-comparison warnings.
tags/v0.15.1
Jeff Garzik 9 years ago
parent
commit
7bd9c3a3cf
5 changed files with 23 additions and 23 deletions
  1. 11
    11
      src/main.cpp
  2. 4
    4
      src/main.h
  3. 5
    5
      src/script.cpp
  4. 2
    2
      src/script.h
  5. 1
    1
      src/test/DoS_tests.cpp

+ 11
- 11
src/main.cpp View File

@@ -195,9 +195,9 @@ void static EraseOrphanTx(uint256 hash)
mapOrphanTransactions.erase(hash);
}

int LimitOrphanTxSize(int nMaxOrphans)
unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans)
{
int nEvicted = 0;
unsigned int nEvicted = 0;
while (mapOrphanTransactions.size() > nMaxOrphans)
{
// Evict a random orphan:
@@ -328,10 +328,10 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const
return true;
}

int
unsigned int
CTransaction::GetLegacySigOpCount() const
{
int nSigOps = 0;
unsigned int nSigOps = 0;
BOOST_FOREACH(const CTxIn& txin, vin)
{
nSigOps += txin.scriptSig.GetSigOpCount(false);
@@ -1079,12 +1079,12 @@ int64 CTransaction::GetValueIn(const MapPrevTx& inputs) const

}

int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const
unsigned int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const
{
if (IsCoinBase())
return 0;

int nSigOps = 0;
unsigned int nSigOps = 0;
for (unsigned int i = 0; i < vin.size(); i++)
{
const CTxOut& prevout = GetOutputFor(vin[i], inputs);
@@ -1284,7 +1284,7 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex)

map<uint256, CTxIndex> mapQueuedChanges;
int64 nFees = 0;
int nSigOps = 0;
unsigned int nSigOps = 0;
BOOST_FOREACH(CTransaction& tx, vtx)
{
nSigOps += tx.GetLegacySigOpCount();
@@ -1645,7 +1645,7 @@ bool CBlock::CheckBlock() const
if (!tx.CheckTransaction())
return DoS(tx.nDoS, error("CheckBlock() : CheckTransaction failed"));

int nSigOps = 0;
unsigned int nSigOps = 0;
BOOST_FOREACH(const CTransaction& tx, vtx)
{
nSigOps += tx.GetLegacySigOpCount();
@@ -2583,9 +2583,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
AddOrphanTx(vMsg);

// DoS prevention: do not allow mapOrphanTransactions to grow unbounded
int nEvicted = LimitOrphanTxSize(MAX_ORPHAN_TRANSACTIONS);
unsigned int nEvicted = LimitOrphanTxSize(MAX_ORPHAN_TRANSACTIONS);
if (nEvicted > 0)
printf("mapOrphan overflow, removed %d tx\n", nEvicted);
printf("mapOrphan overflow, removed %u tx\n", nEvicted);
}
if (tx.nDoS) pfrom->Misbehaving(tx.nDoS);
}
@@ -3209,7 +3209,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
continue;

// Legacy limits on sigOps:
int nTxSigOps = tx.GetLegacySigOpCount();
unsigned int nTxSigOps = tx.GetLegacySigOpCount();
if (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS)
continue;


+ 4
- 4
src/main.h View File

@@ -28,8 +28,8 @@ class CNode;

static const unsigned int MAX_BLOCK_SIZE = 1000000;
static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE/2;
static const int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
static const int MAX_ORPHAN_TRANSACTIONS = MAX_BLOCK_SIZE/100;
static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
static const unsigned int MAX_ORPHAN_TRANSACTIONS = MAX_BLOCK_SIZE/100;
static const int64 MIN_TX_FEE = 50000;
static const int64 MIN_RELAY_TX_FEE = 10000;
static const int64 MAX_MONEY = 21000000 * COIN;
@@ -495,7 +495,7 @@ public:
@return number of sigops this transaction's outputs will produce when spent
@see CTransaction::FetchInputs
*/
int GetLegacySigOpCount() const;
unsigned int GetLegacySigOpCount() const;

/** Count ECDSA signature operations in pay-to-script-hash inputs.

@@ -503,7 +503,7 @@ public:
@return maximum number of sigops required to validate this transaction's inputs
@see CTransaction::FetchInputs
*/
int GetP2SHSigOpCount(const MapPrevTx& mapInputs) const;
unsigned int GetP2SHSigOpCount(const MapPrevTx& mapInputs) const;

/** Amount of bitcoins spent by this transaction.
@return sum of all outputs (note: does not include fees)

+ 5
- 5
src/script.cpp View File

@@ -1360,9 +1360,9 @@ bool IsStandard(const CScript& scriptPubKey)
}


int HaveKeys(const vector<valtype>& pubkeys, const CKeyStore& keystore)
unsigned int HaveKeys(const vector<valtype>& pubkeys, const CKeyStore& keystore)
{
int nResult = 0;
unsigned int nResult = 0;
BOOST_FOREACH(const valtype& pubkey, pubkeys)
{
CBitcoinAddress address;
@@ -1566,9 +1566,9 @@ bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsig
return true;
}

int CScript::GetSigOpCount(bool fAccurate) const
unsigned int CScript::GetSigOpCount(bool fAccurate) const
{
int n = 0;
unsigned int n = 0;
const_iterator pc = begin();
opcodetype lastOpcode = OP_INVALIDOPCODE;
while (pc < end())
@@ -1590,7 +1590,7 @@ int CScript::GetSigOpCount(bool fAccurate) const
return n;
}

int CScript::GetSigOpCount(const CScript& scriptSig) const
unsigned int CScript::GetSigOpCount(const CScript& scriptSig) const
{
if (!IsPayToScriptHash())
return GetSigOpCount(true);

+ 2
- 2
src/script.h View File

@@ -491,11 +491,11 @@ public:
// CHECKMULTISIGs serialized in scriptSigs are
// counted more accurately, assuming they are of the form
// ... OP_N CHECKMULTISIG ...
int GetSigOpCount(bool fAccurate) const;
unsigned int GetSigOpCount(bool fAccurate) const;

// Accurately count sigOps, including sigOps in
// pay-to-script-hash transactions:
int GetSigOpCount(const CScript& scriptSig) const;
unsigned int GetSigOpCount(const CScript& scriptSig) const;

bool IsPayToScriptHash() const;


+ 1
- 1
src/test/DoS_tests.cpp View File

@@ -14,7 +14,7 @@

// Tests this internal-to-main.cpp method:
extern void AddOrphanTx(const CDataStream& vMsg);
extern int LimitOrphanTxSize(int nMaxOrphans);
extern unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans);
extern std::map<uint256, CDataStream*> mapOrphanTransactions;
extern std::multimap<uint256, CDataStream*> mapOrphanTransactionsByPrev;


Loading…
Cancel
Save