From a6157fe0a9c36d214506738f3456dcfa7b86c436 Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Wed, 1 Jun 2022 15:44:24 -0300 Subject: [PATCH] Fail if tx blob is empty Some node on the network apparently has a corrupted DB and is spewing empty tx blobs onto the network. Detect such a case rather than broadcasting broken empty txes. --- src/blockchain_db/lmdb/db_lmdb.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index 00c02b208..f1f6efd23 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -1998,6 +1998,9 @@ bool BlockchainLMDB::get_txpool_tx_blob(const crypto::hash& txid, std::string &b if (result != 0) throw1(DB_ERROR(lmdb_error("Error finding txpool tx blob: ", result).c_str())); + if (v.mv_size == 0) + throw1(DB_ERROR("Error finding txpool tx blob: tx is present, but data is empty")); + bd.assign(reinterpret_cast(v.mv_data), v.mv_size); return true; }