From d220ac44f35ab99cfefb5e1d883ab747242a3a38 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Wed, 8 Oct 2025 19:39:05 +0100 Subject: [PATCH] Improve cache initialization by adding divisor check to prevent division by zero --- src/open.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/open.c b/src/open.c index 62ca994..d3718df 100644 --- a/src/open.c +++ b/src/open.c @@ -447,10 +447,20 @@ void *aaruf_open(const char *filepath) // NOLINT(readability-function-size) // Initialize caches TRACE("Initializing caches"); - ctx->blockHeaderCache.cache = NULL; - ctx->blockHeaderCache.max_items = MAX_CACHE_SIZE / (ctx->imageInfo.SectorSize * (1 << ctx->shift)); - ctx->blockCache.cache = NULL; - ctx->blockCache.max_items = ctx->blockHeaderCache.max_items; + ctx->blockHeaderCache.cache = NULL; + ctx->blockCache.cache = NULL; + + const uint64_t cache_divisor = (uint64_t)ctx->imageInfo.SectorSize * (1ULL << ctx->shift); + if(cache_divisor == 0) + { + ctx->blockHeaderCache.max_items = 0; + ctx->blockCache.max_items = 0; + } + else + { + ctx->blockHeaderCache.max_items = MAX_CACHE_SIZE / cache_divisor; + ctx->blockCache.max_items = ctx->blockHeaderCache.max_items; + } // TODO: Cache tracks and sessions?