Browse Source

Code cleanup: use ECDSA_size() instead of fixed 10,000 byte sig buffer, and explicity init static var

0.8
Gavin Andresen 13 years ago
parent
commit
9ef7fa3447
  1. 13
      src/key.h
  2. 2
      src/main.cpp

13
src/key.h

@ -178,13 +178,14 @@ public:
bool Sign(uint256 hash, std::vector<unsigned char>& vchSig) bool Sign(uint256 hash, std::vector<unsigned char>& vchSig)
{ {
vchSig.clear(); unsigned int nSize = ECDSA_size(pkey);
unsigned char pchSig[10000]; vchSig.resize(nSize); // Make sure it is big enough
unsigned int nSize = 0; if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], &nSize, pkey))
if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), pchSig, &nSize, pkey)) {
vchSig.clear();
return false; return false;
vchSig.resize(nSize); }
memcpy(&vchSig[0], pchSig, nSize); vchSig.resize(nSize); // Shrink to fit actual size
return true; return true;
} }

2
src/main.cpp

@ -1875,7 +1875,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
} }
// Ask the first connected node for block updates // Ask the first connected node for block updates
static int nAskedForBlocks; static int nAskedForBlocks = 0;
if (!pfrom->fClient && if (!pfrom->fClient &&
(pfrom->nVersion < 32000 || pfrom->nVersion >= 32400) && (pfrom->nVersion < 32000 || pfrom->nVersion >= 32400) &&
(nAskedForBlocks < 1 || vNodes.size() <= 1)) (nAskedForBlocks < 1 || vNodes.size() <= 1))

Loading…
Cancel
Save