From f81785ad14b24337668dbea857e46f070d681eca 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);