Re: BUG #5275: validate_exec in port/exec.c only reads u/g/o, not ACLs

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "James Bellinger" <jfb(at)zer7(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5275: validate_exec in port/exec.c only reads u/g/o, not ACLs
Date: 2010-01-13 21:21:53
Message-ID: 4178.1263417713@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

"James Bellinger" <jfb(at)zer7(dot)com> writes:
> I'm not certain of the actual *purpose* for this function even checking in
> the first place, but the result is that, if Postgres gets its access via an
> ACL, it will say 'invalid binary' here and there, will not be able to find
> its own executables, etc. I can see no purpose for this function.

Hmm. I wonder why we have all that complexity at all, rather than using
access(2). The man page says it checks against real not effective uid,
but since we don't run setuid I think there's no difference.

[ pokes in CVS history ... ] Oh, this is interesting: this code looks
like this clear back to the original Berkeley import, and back then it
had this comment:

* We use the effective uid here because the backend will not have
* executed setuid() by the time it calls this routine.

So once upon a time there was a reason to try to implement access()
for ourselves, but it's long gone. Comments?

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Charles O'Farrell 2010-01-13 22:20:16 Re: Substring auto trim
Previous Message James Bellinger 2010-01-13 20:58:38 BUG #5275: validate_exec in port/exec.c only reads u/g/o, not ACLs