diff options
author | Jeff Garzik <jgarzik@exmulti.com> | 2012-05-22 14:39:49 -0700 |
---|---|---|
committer | Jeff Garzik <jgarzik@exmulti.com> | 2012-05-22 14:39:49 -0700 |
commit | 5d0f7c4f47e6b9aa382846dd9b4a034e724d461a (patch) | |
tree | ce4b08cbe53dee3091698617fdcecb1665f7ccd0 /src/db.h | |
parent | fa638ec8af92d6deaf17d3c09b03406808f19904 (diff) | |
parent | 8fe791e4e2db4b66f47d44d2ecaf734e2a36e5ed (diff) | |
download | bitcoin-5d0f7c4f47e6b9aa382846dd9b4a034e724d461a.tar.xz |
Merge pull request #1381 from jgarzik/check-deser
Prevent crashes due to missing or corrupted database records
Diffstat (limited to 'src/db.h')
-rw-r--r-- | src/db.h | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -72,8 +72,13 @@ protected: return false; // Unserialize value - CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK, CLIENT_VERSION); - ssValue >> value; + try { + CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK, CLIENT_VERSION); + ssValue >> value; + } + catch (std::exception &e) { + return false; + } // Clear and free memory memset(datValue.get_data(), 0, datValue.get_size()); |