• Tom Lane's avatar
    Do not let PostmasterContext survive into background workers. · ef1b5af8
    Tom Lane authored
    We don't want postmaster child processes to contain a copy of the
    postmaster's PostmasterContext.  That would be a waste of memory at least,
    and at worst a security issue, since there are copies of the semi-sensitive
    pg_hba and pg_ident data in there.  All other child process types delete
    the PostmasterContext after forking, but the original coding of the
    background worker patch (commit da07a1e8) did not do so.  It appears
    that the only reason for that was to avoid copying the bgworker's
    MyBgworkerEntry out of that context; but the couple of additional
    statements needed to do so are hardly good justification for it.  Hence,
    copy that data and then clear the context as other child processes do.
    
    Because this patch changes the memory context in which a bgworker function
    gains control, back-patching it would be a bit risky, so we won't fix this
    in back branches.  The "security" complaint is pretty thin anyway for
    generic bgworkers; only with the introduction of parallel query is there
    any question of running untrusted code in a bgworker process.
    
    Discussion: <14111.1470082717@sss.pgh.pa.us>
    ef1b5af8
postmaster.c 171 KB