Skip to content

Commit 40820ab

Browse files
MCOL-5932: fix heap buffer overflow
1 parent 01a3722 commit 40820ab

File tree

3 files changed

+1731
-2
lines changed

3 files changed

+1731
-2
lines changed

dbcon/joblist/joblistfactory.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,8 @@ const JobStepVector doAggProject(const CalpontSelectExecutionPlan* csep, JobInfo
11291129
else
11301130
it = pcv.insert(pcv.end(), srcp);
11311131

1132-
projectKeys.insert(projectKeys.begin() + std::distance(pcv.begin(), it), tupleKey);
1132+
auto placeToInsert = std::distance(pcv.begin(), it);
1133+
projectKeys.insert(projectKeys.begin() + std::min(placeToInsert, projectKeys.end() - projectKeys.begin()), tupleKey);
11331134
}
11341135
else if (doDistinct) // @bug4250, move forward distinct column if necessary.
11351136
{
@@ -1300,7 +1301,8 @@ const JobStepVector doAggProject(const CalpontSelectExecutionPlan* csep, JobInfo
13001301
else
13011302
it = pcv.insert(pcv.end(), srcp);
13021303

1303-
projectKeys.insert(projectKeys.begin() + std::distance(pcv.begin(), it), tupleKey);
1304+
auto placeToInsert = std::distance(pcv.begin(), it);
1305+
projectKeys.insert(projectKeys.begin() + std::min(placeToInsert, projectKeys.end() - projectKeys.begin()), tupleKey);
13041306
}
13051307
else if (doDistinct) // @bug4250, move forward distinct column if necessary.
13061308
{

0 commit comments

Comments
 (0)