diff options
author | Abraham Jewowich <abuse@loljews.com> | 2011-07-18 06:26:54 -0700 |
---|---|---|
committer | Abraham Jewowich <abuse@loljews.com> | 2011-07-18 06:26:54 -0700 |
commit | 03f8b545655bd1a6ee6db7e2e6d14586900cacb1 (patch) | |
tree | 7e37fb19ab0b2c01024d6824103aa4d383147691 /src/base58.h | |
parent | cb61b8dc4ce2f24332fdfe9b47e5f87905a9da71 (diff) |
Fix bug with accessing vchData[0] when vchData is empty.
Fix typo in CBase58Data::CompareTo
Diffstat (limited to 'src/base58.h')
-rw-r--r-- | src/base58.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/base58.h b/src/base58.h index 985b0447c0..266412c861 100644 --- a/src/base58.h +++ b/src/base58.h @@ -173,14 +173,16 @@ protected: ~CBase58Data() { - memset(&vchData[0], 0, vchData.size()); + if (!vchData.empty()) + memset(&vchData[0], 0, vchData.size()); } void SetData(int nVersionIn, const void* pdata, size_t nSize) { nVersion = nVersionIn; vchData.resize(nSize); - memcpy(&vchData[0], pdata, nSize); + if (!vchData.empty()) + memcpy(&vchData[0], pdata, nSize); } void SetData(int nVersionIn, const unsigned char *pbegin, const unsigned char *pend) @@ -201,7 +203,8 @@ public: } nVersion = vchTemp[0]; vchData.resize(vchTemp.size() - 1); - memcpy(&vchData[0], &vchTemp[1], vchData.size()); + if (!vchData.empty()) + memcpy(&vchData[0], &vchTemp[1], vchData.size()); memset(&vchTemp[0], 0, vchTemp.size()); return true; } @@ -221,7 +224,7 @@ public: int CompareTo(const CBase58Data& b58) const { if (nVersion < b58.nVersion) return -1; - if (nVersion < b58.nVersion) return 1; + if (nVersion > b58.nVersion) return 1; if (vchData < b58.vchData) return -1; if (vchData > b58.vchData) return 1; return 0; |