From 86ef68a657da44a1c61154f35f97f184dfa7f372 Mon Sep 17 00:00:00 2001 From: Khashayar Fereidani Date: Mon, 25 Nov 2019 22:12:04 +0330 Subject: [PATCH] Fix underflow initialization of default values Initialization of queryWindowClause and queryOrderByLimit "memset" underflow these variables. It's possible due to the invalid usage sizeof this part of the program cause buffer overflow and function return data corruption in future changes. --- src/backend/distributed/planner/multi_logical_optimizer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/distributed/planner/multi_logical_optimizer.c b/src/backend/distributed/planner/multi_logical_optimizer.c index 1c7d77922..3c82bfb47 100644 --- a/src/backend/distributed/planner/multi_logical_optimizer.c +++ b/src/backend/distributed/planner/multi_logical_optimizer.c @@ -2078,11 +2078,11 @@ WorkerExtendedOpNode(MultiExtendedOp *originalOpNode, bool queryHasAggregates = TargetListHasAggragates(originalTargetEntryList); /* initialize to default values */ - memset(&queryTargetList, 0, sizeof(queryGroupClause)); + memset(&queryTargetList, 0, sizeof(queryTargetList)); memset(&queryGroupClause, 0, sizeof(queryGroupClause)); - memset(&queryDistinctClause, 0, sizeof(queryGroupClause)); - memset(&queryWindowClause, 0, sizeof(queryGroupClause)); - memset(&queryOrderByLimit, 0, sizeof(queryGroupClause)); + memset(&queryDistinctClause, 0, sizeof(queryDistinctClause)); + memset(&queryWindowClause, 0, sizeof(queryWindowClause)); + memset(&queryOrderByLimit, 0, sizeof(queryOrderByLimit)); /* calculate the next sort group index based on the original target list */ Index nextSortGroupRefIndex = GetNextSortGroupRef(originalTargetEntryList);