• Tom Lane's avatar
    Fix choice of comparison operators for cross-type hashed subplans. · 4766dce0
    Tom Lane authored
    Commit bf6c614a rearranged the lookup of the comparison operators
    needed in a hashed subplan, and in so doing, broke the cross-type
    case: it caused the original LHS-vs-RHS operator to be used to compare
    hash table entries too (which of course are all of the RHS type).
    This leads to C functions being passed a Datum that is not of the
    type they expect, with the usual hazards of crashes and unauthorized
    server memory disclosure.
    
    For the set of hashable cross-type operators present in v11 core
    Postgres, this bug is nearly harmless on 64-bit machines, which
    may explain why it escaped earlier detection.  But it is a live
    security hazard on 32-bit machines; and of course there may be
    extensions that add more hashable cross-type operators, which
    would increase the risk.
    
    Reported by Andreas Seltenreich.  Back-patch to v11 where the
    problem came in.
    
    Security: CVE-2019-10209
    4766dce0
subselect.out 37.5 KB