From: | Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "David E(dot) Wheeler" <david(at)kineticode(dot)com>, Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: First feature patch for plperl - draft [PATCH] |
Date: | 2009-12-05 13:56:00 |
Message-ID: | 20091205135600.GA96338@timac.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, Dec 05, 2009 at 01:21:22AM -0500, Tom Lane wrote:
> "David E. Wheeler" <david(at)kineticode(dot)com> writes:
> > Tom, what's your objection to Shlib load time being user-visible?
>
> It's not really designed to be user-visible. Let me give you just
> two examples:
>
> * We call a plperl function for the first time in a session, causing
> plperl.so to be loaded. Later the transaction fails and is rolled
> back. If loading plperl.so caused some user-visible things to happen,
> should those be rolled back?
No. Establishing initial state, no matter how that's triggered, is not
part of a transaction.
> * We call a plperl function for the first time in a session, causing
> plperl.so to be loaded. This happens in the context of a superuser
> calling a non-superuser security definer function, or perhaps vice
> versa. Whose permissions apply to whatever the on_load code tries
> to do? (Hint: every answer is wrong.)
I'll modify the patch to disable the SPI functions during
initialization (both on_perl_init and on_(un)trusted_init).
Would that address your concerns?
> That doesn't even begin to cover the problems with allowing any of
> this to happen inside the postmaster. Recall that the postmaster
> does not have any database access. Furthermore, it is a very long
> established reliability principle around here that the postmaster
> process should do as little as possible, because every thing that it
> does creates another opportunity to have a nonrecoverable failure.
> The postmaster can recover if a child crashes, but the other way
> round, not so much.
I hope the combination of disabling the SPI functions during
initialization, and documenting the risks of combining on_perl_init and
shared_preload_libraries, is sufficient.
Tim.
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2009-12-05 14:46:34 | Re: pg_attribute.attnum - wrong column ordinal? |
Previous Message | Bruce Momjian | 2009-12-05 13:18:13 | Re: Adding support for SE-Linux security |