From 60ceaea4f2b79195d3f02be5eb8d003228463cd2 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 23 Apr 2024 15:43:04 -0700 Subject: [PATCH] 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 7c55bee..71d99a6 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); }