diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/util/relnode.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 76dad17e336..5d83f60eb9a 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -406,9 +406,8 @@ find_base_rel(PlannerInfo *root, int relid) { RelOptInfo *rel; - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + /* use an unsigned comparison to prevent negative array element access */ + if ((uint32) relid < (uint32) root->simple_rel_array_size) { rel = root->simple_rel_array[relid]; if (rel) @@ -432,9 +431,8 @@ find_base_rel(PlannerInfo *root, int relid) RelOptInfo * find_base_rel_ignore_join(PlannerInfo *root, int relid) { - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + /* use an unsigned comparison to prevent negative array element access */ + if ((uint32) relid < (uint32) root->simple_rel_array_size) { RelOptInfo *rel; RangeTblEntry *rte; |