From 03f8b545655bd1a6ee6db7e2e6d14586900cacb1 Mon Sep 17 00:00:00 2001 From: Abraham Jewowich Date: Mon, 18 Jul 2011 06:26:54 -0700 Subject: [PATCH] Fix bug with accessing vchData[0] when vchData is empty. Fix typo in CBase58Data::CompareTo --- src/base58.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/base58.h b/src/base58.h index 985b0447c07a8..266412c861c95 100644 --- a/src/base58.h +++ b/src/base58.h @@ -173,14 +173,16 @@ class CBase58Data ~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 @@ class CBase58Data } 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 @@ class CBase58Data 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;