Added safety check to NormCenters [skip ci]

This commit is contained in:
Andrew Kane
2024-04-23 15:43:04 -07:00
parent 9cd789fe06
commit 60ceaea4f2

View File

@@ -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);
}