pgvector.git / summary / log / commit / refs
commit 60ceaea4f2b79195d3f02be5eb8d003228463cd2
Author: Andrew Kane <andrew@ankane.org>
Date: Tue Apr 23 22:43:04 2024 +0000
Added safety check to NormCenters [skip ci]
src/ivfkmeans.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/ivfkmeans.c b/src/ivfkmeans.c
index 7c55bee6..71d99a6a 100644
--- a/src/ivfkmeans.c
+++ b/src/ivfkmeans.c
@@ -103,8 +103,12 @@ NormCenters(FmgrInfo *normalizeprocinfo, Oid collation, VectorArray centers)
{
Datum center = PointerGetDatum(VectorArrayGet(centers, j));
Datum newCenter = IvfflatNormValue(normalizeprocinfo, collation, center);
+ Size size = VARSIZE_ANY(DatumGetPointer(newCenter));
- memcpy(DatumGetPointer(center), DatumGetPointer(newCenter), VARSIZE_ANY(DatumGetPointer(newCenter)));
+ if (size > centers->itemsize)
+ elog(ERROR, "safety check failed");
+
+ memcpy(DatumGetPointer(center), DatumGetPointer(newCenter), size);
MemoryContextReset(normCtx);
}
[parent: 9cd789fe0621]