From 7bfb552f635ebc5abeb62df489f0dee108fa4f61 Mon Sep 17 00:00:00 2001 From: Patrick Strateman Date: Sat, 23 Apr 2016 22:21:52 -0700 Subject: [PATCH] CAddrMan::Deserialize handle corrupt serializations better. Signed-off-by: Simon --- src/addrman.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/addrman.h b/src/addrman.h index 7ee8b63ee..cde9430ae 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -349,6 +349,14 @@ public: nUBuckets ^= (1 << 30); } + if (nNew > ADDRMAN_NEW_BUCKET_COUNT * ADDRMAN_BUCKET_SIZE) { + throw std::ios_base::failure("Corrupt CAddrMan serialization, nNew exceeds limit."); + } + + if (nTried > ADDRMAN_TRIED_BUCKET_COUNT * ADDRMAN_BUCKET_SIZE) { + throw std::ios_base::failure("Corrupt CAddrMan serialization, nTried exceeds limit."); + } + // Deserialize entries from the new table. for (int n = 0; n < nNew; n++) { CAddrInfo &info = mapInfo[n];