mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Avoid crash in estimate_array_length with null root pointer.
Commit9391f7152
added a "PlannerInfo *root" parameter to estimate_array_length, but failed to consider the possibility that NULL would be passed for that, leading to a null pointer dereference. We could rectify the particular case shown in the bug report by fixing simplify_function/inline_function to pass through the root pointer. However, as long as eval_const_expressions is documented to accept NULL for root, similar hazards would remain. For now, let's just do the narrow fix of hardening estimate_array_length to not crash. Its behavior with NULL root will be the same as it was before9391f7152
, so this is not too awful. Per report from Fredrik Widlert (via Paul Ramsey). Back-patch to v17 where9391f7152
came in. Discussion: https://postgr.es/m/518339E7-173E-45EC-A0FF-9A4A62AA4F40@cleverelephant.ca
This commit is contained in:
@ -4724,6 +4724,9 @@ cost_rescan(PlannerInfo *root, Path *path,
|
||||
* preferred since it allows caching of the results.)
|
||||
* The result includes both a one-time (startup) component,
|
||||
* and a per-evaluation component.
|
||||
*
|
||||
* Note: in some code paths root can be passed as NULL, resulting in
|
||||
* slightly worse estimates.
|
||||
*/
|
||||
void
|
||||
cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root)
|
||||
|
Reference in New Issue
Block a user