various: do not propagate exception through dtor

Coverity 189689, 189690, 189692, 189695
This commit is contained in:
moneromooo-monero 2018-11-15 13:51:54 +00:00
parent d0c4123034
commit 2b3595d0fe
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
4 changed files with 11 additions and 4 deletions

View file

@ -73,7 +73,7 @@ namespace epee
mlocked(const T &&t): T(t) { mlocker::lock(this, sizeof(T)); } mlocked(const T &&t): T(t) { mlocker::lock(this, sizeof(T)); }
mlocked(const mlocked<T> &&mt): T(mt) { mlocker::lock(this, sizeof(T)); } mlocked(const mlocked<T> &&mt): T(mt) { mlocker::lock(this, sizeof(T)); }
mlocked<T> &operator=(const mlocked<T> &mt) { T::operator=(mt); return *this; } mlocked<T> &operator=(const mlocked<T> &mt) { T::operator=(mt); return *this; }
~mlocked() { mlocker::unlock(this, sizeof(T)); } ~mlocked() { try { mlocker::unlock(this, sizeof(T)); } catch (...) { /* do not propagate */ } }
}; };
template<typename T> template<typename T>

View file

@ -108,7 +108,8 @@ namespace epee
mlocker::~mlocker() mlocker::~mlocker()
{ {
unlock(ptr, len); try { unlock(ptr, len); }
catch (...) { /* ignore and do not propagate through the dtor */ }
} }
void mlocker::lock(void *ptr, size_t len) void mlocker::lock(void *ptr, size_t len)

View file

@ -55,7 +55,8 @@ public:
{ {
if (m_ok) if (m_ok)
{ {
mp_http_client->disconnect(); try { mp_http_client->disconnect(); }
catch (...) { /* do not propagate through dtor */ }
} }
} }

View file

@ -815,7 +815,12 @@ wallet_keys_unlocker::~wallet_keys_unlocker()
{ {
if (!locked) if (!locked)
return; return;
w.encrypt_keys(key); try { w.encrypt_keys(key); }
catch (...)
{
MERROR("Failed to re-encrypt wallet keys");
// do not propagate through dtor, we'd crash
}
} }
wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended): wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended):