diff --git a/src/validation.cpp b/src/validation.cpp
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -6702,6 +6702,12 @@
                 coins_count - coins_left);
             return false;
         }
+        if (!MoneyRange(coin.GetTxOut().nValue)) {
+            LogPrintf("[snapshot] bad snapshot data after deserializing %d "
+                      "coins - bad tx out value\n",
+                      coins_count - coins_left);
+            return false;
+        }
         coins_cache.EmplaceCoinInternalDANGER(std::move(outpoint),
                                               std::move(coin));