wipeable_string: don't try to wipe an empty buffer

memset_s doesn't like it
This commit is contained in:
moneromooo-monero 2018-02-18 13:45:43 +00:00
parent 4f80c50730
commit 4789f8598f
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -76,7 +76,8 @@ wipeable_string::~wipeable_string()
void wipeable_string::wipe()
{
memwipe(buffer.data(), buffer.size() * sizeof(char));
if (!buffer.empty())
memwipe(buffer.data(), buffer.size() * sizeof(char));
}
void wipeable_string::grow(size_t sz, size_t reserved)
@ -93,11 +94,13 @@ void wipeable_string::grow(size_t sz, size_t reserved)
size_t old_sz = buffer.size();
std::unique_ptr<char[]> tmp{new char[old_sz]};
memcpy(tmp.get(), buffer.data(), old_sz * sizeof(char));
memwipe(buffer.data(), old_sz * sizeof(char));
if (old_sz > 0)
memwipe(buffer.data(), old_sz * sizeof(char));
buffer.reserve(reserved);
buffer.resize(sz);
memcpy(buffer.data(), tmp.get(), old_sz * sizeof(char));
memwipe(tmp.get(), old_sz * sizeof(char));
if (old_sz > 0)
memwipe(tmp.get(), old_sz * sizeof(char));
}
void wipeable_string::push_back(char c)