From 281dbd5524b4ef3a6068221473c9f0267c023aa6 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Thu, 13 Jul 2023 01:02:27 +0000 Subject: [PATCH] Ensure that `extended_range` in `scan_complete` is a superset of `range` Previously `extended_range` only covered the extent of the leaves of all subtrees in which notes were found during a scan. When the scanned range was large, this was not guaranteed to be contained within the subtree leaves, causing an assertion failure when an invalid `ScanRange` was constructed. --- zcash_client_sqlite/src/wallet/scanning.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zcash_client_sqlite/src/wallet/scanning.rs b/zcash_client_sqlite/src/wallet/scanning.rs index e334781dc..aca6a7b3a 100644 --- a/zcash_client_sqlite/src/wallet/scanning.rs +++ b/zcash_client_sqlite/src/wallet/scanning.rs @@ -569,8 +569,8 @@ pub(crate) fn scan_complete( let range_max = sapling_shard_end(*max_idx)?; Ok::, rusqlite::Error>(Range { - start: range_min.unwrap_or(range.start), - end: range_max.unwrap_or(range.end), + start: range.start.min(range_min.unwrap_or(range.start)), + end: range.end.max(range_max.unwrap_or(range.end)), }) }) .transpose()