From ddc33770261a2e6640fc9a37d772d599440899a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Tue, 31 Mar 2020 18:44:34 +0000 Subject: [PATCH] Assert bounds checks on two array reads which rely on data not being out of bounds --- .../distributed/executor/distributed_intermediate_results.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/distributed/executor/distributed_intermediate_results.c b/src/backend/distributed/executor/distributed_intermediate_results.c index ddaad030e..b1a6183b6 100644 --- a/src/backend/distributed/executor/distributed_intermediate_results.c +++ b/src/backend/distributed/executor/distributed_intermediate_results.c @@ -373,6 +373,7 @@ TupleToDistributedResultFragment(TupleTableSlot *tupleSlot, text *resultId = DatumGetTextP(slot_getattr(tupleSlot, 3, &isNull)); int64 rowCount = DatumGetInt64(slot_getattr(tupleSlot, 4, &isNull)); + Assert(targetShardIndex < targetRelation->shardIntervalArrayLength); ShardInterval *shardInterval = targetRelation->sortedShardIntervalArray[targetShardIndex]; @@ -443,6 +444,7 @@ ColocateFragmentsWithRelation(List *fragmentList, CitusTableCacheEntry *targetRe { int shardIndex = sourceFragment->targetShardIndex; + Assert(shardIndex < shardCount); shardResultIdList[shardIndex] = lappend(shardResultIdList[shardIndex], sourceFragment->resultId); }