From 0410fbc39945e438620e332df7f3c78d9777de3a Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Wed, 26 Aug 2026 21:52:42 +0200 Subject: [PATCH] Fix potential uint64_t overflow in parity tail ceil division in locate --- cmdline/locate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmdline/locate.c b/cmdline/locate.c index 11839485..0ee55276 100644 --- a/cmdline/locate.c +++ b/cmdline/locate.c @@ -104,14 +104,14 @@ static void collect_parity_block_file(uint32_t block_size, struct snapraid_disk* tommy_list_insert_tail(file_list, &entry->node, entry); } -void state_locate_info(struct snapraid_state* state, uint64_t parity_tail, struct snapraid_locate_info* info) +static void state_locate_info(struct snapraid_state* state, uint64_t parity_tail, struct snapraid_locate_info* info) { uint32_t block_size = state->block_size; info->block_max = parity_allocated_size(state); info->parity_size = info->block_max * (uint64_t)block_size; - info->tail_block = (parity_tail + block_size - 1) / block_size; + info->tail_block = (parity_tail / block_size) + (parity_tail % block_size != 0); if (info->tail_block > info->block_max) info->low_to_free_tail_block = 0;