From 54fa16e3e35683f65bbb7277363451f9f2b7c8e5 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Thu, 26 Sep 2024 08:32:44 -0700 Subject: [PATCH] Added safety check [skip ci] --- src/hnswutils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hnswutils.c b/src/hnswutils.c index ac1e7de..d807248 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -759,9 +759,16 @@ HnswLoadUnvisitedFromDisk(HnswElement element, HnswUnvisited * unvisited, int *u page = BufferGetPage(buf); ntup = (HnswNeighborTuple) PageGetItem(page, PageGetItemId(page, element->neighborOffno)); - start = (element->level - lc) * m; + + /* Ensure expected neighbors */ + if (ntup->count != (element->level + 2) * m) + { + UnlockReleaseBuffer(buf); + return; + } /* Copy to minimize lock time */ + start = (element->level - lc) * m; memcpy(&indextids, ntup->indextids + start, lm * sizeof(ItemPointerData)); UnlockReleaseBuffer(buf);