Remove BSD-style LOCAL_CREDS support
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 13 Sep 2013 17:39:18 +0000 (18:39 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 23 Sep 2013 10:23:45 +0000 (11:23 +0100)
commit4d869cf5c2a3d763c475a40cfba69564385fdec4
tree83e229eff3229d219151173d134a8937e49ac049
parent4d32787e9926627ef75bb607d8cd9fe2b332a802
Remove BSD-style LOCAL_CREDS support

It appears that this regressed back in 2009 (commit 7bf132c7)
and doesn't compile. Also, with patches from Matt Fischer to make
it compile again on QNX, it compiles but doesn't actually work
on NetBSD, which was the platform for which this code was added.
This might be for the reasons described in
<http://julipedia.meroh.net/2006/08/localcreds-socket-credentials.html>.
NetBSD pkgsrc has a large unsubmitted patch to use LOCAL_PEEREID, which
is analogous to Linux/OpenBSD SO_PEERCRED.

So, I think we can safely assume that nobody is relying on this:
either they implement one of our many other supported
credentials-passing mechanisms, or they're patching it locally
anyway.

LOCAL_CREDS is not actually very good - it's awkward to use, and
doesn't provide the pid, only the uid. Of the platforms known to
implement it, QNX and NetBSD both have getpeereid() which provides
just as much information, while FreeBSD and Dragonfly BSD both have
SCM_CREDS which provides the pid too. So, let's just get rid of it.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=60340
Reviewed-by: Colin Walters <walters@verbum.org>
dbus/dbus-sysdeps-unix.c