• Tom Lane's avatar
    Be more paranoid in ruleutils.c's get_variable(). · 0daeba0e
    Tom Lane authored
    We were merely Assert'ing that the Var matched the RTE it's supposedly
    from.  But if the user passes incorrect information to pg_get_expr(),
    the RTE might in fact not match; this led either to Assert failures
    or core dumps, as reported by Chris Hanks in bug #14220.  To fix, just
    convert the Asserts to test-and-elog.  Adjust an existing test-and-elog
    elsewhere in the same function to be consistent in wording.
    
    (If we really felt these were user-facing errors, we might promote them to
    ereport's; but I can't convince myself that they're worth translating.)
    
    Back-patch to 9.3; the problematic code doesn't exist before that, and
    a quick check says that 9.2 doesn't crash on such cases.
    
    Michael Paquier and Thomas Munro
    
    Report: <20160629224349.1407.32667@wrigleys.postgresql.org>
    0daeba0e
ruleutils.c 280 KB