From 91459fb644a0c8ee24c28fc491bda4708e5bd386 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Fri, 6 Mar 2026 11:26:40 +0100 Subject: [PATCH] The overflow check used std::min(elementCount currBinSize/2) assuming at most half the bin entries can be duplicates, but with repetitive k-mer hits (e.g. antibody frameworks) elementCount can approach currBinSize, causing out-of-bounds writes. Use elementCount directly for a correct bound. --- src/prefiltering/CacheFriendlyOperations.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prefiltering/CacheFriendlyOperations.cpp b/src/prefiltering/CacheFriendlyOperations.cpp index 5d2316d49..224b03e84 100644 --- a/src/prefiltering/CacheFriendlyOperations.cpp +++ b/src/prefiltering/CacheFriendlyOperations.cpp @@ -207,8 +207,8 @@ size_t CacheFriendlyOperations::findDuplicates(CounterResult *output, s duplicateBitArray[hashBinElement] = currDiagonal; } // check for overflow - if (doubleElementCount + std::min(elementCount, currBinSize/2) >= outputSize) { - return doubleElementCount; + if (doubleElementCount + elementCount >= outputSize) { + return doubleElementCount; } // set memory to zero if (computeTotalScore) {