• Robert Haas's avatar
    Avoid repeated name lookups during table and index DDL. · 5f173040
    Robert Haas authored
    If the name lookups come to different conclusions due to concurrent
    activity, we might perform some parts of the DDL on a different table
    than other parts.  At least in the case of CREATE INDEX, this can be
    used to cause the permissions checks to be performed against a
    different table than the index creation, allowing for a privilege
    escalation attack.
    
    This changes the calling convention for DefineIndex, CreateTrigger,
    transformIndexStmt, transformAlterTableStmt, CheckIndexCompatible
    (in 9.2 and newer), and AlterTable (in 9.1 and older).  In addition,
    CheckRelationOwnership is removed in 9.2 and newer and the calling
    convention is changed in older branches.  A field has also been added
    to the Constraint node (FkConstraint in 8.4).  Third-party code calling
    these functions or using the Constraint node will require updating.
    
    Report by Andres Freund.  Patch by Robert Haas and Andres Freund,
    reviewed by Tom Lane.
    
    Security: CVE-2014-0062
    5f173040
parsenodes.h 92.5 KB