From: Lennart Poettering Date: Sat, 30 Mar 2013 14:18:31 +0000 (+0100) Subject: bus: enable SO_PASSCRED only if we are not connected to a bus X-Git-Tag: v201~136 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=0f4b73c8d379183678d5b99cf235f24c8ebd32f3 bus: enable SO_PASSCRED only if we are not connected to a bus --- diff --git a/src/libsystemd-bus/bus-socket.c b/src/libsystemd-bus/bus-socket.c index 4f1fd9454..9512d2e31 100644 --- a/src/libsystemd-bus/bus-socket.c +++ b/src/libsystemd-bus/bus-socket.c @@ -202,15 +202,15 @@ static int bus_socket_read_auth(sd_bus *b) { } static int bus_socket_setup(sd_bus *b) { - int one; + int enable; assert(b); /* Enable SO_PASSCRED + SO_PASSEC. We try this on any * socket, just in case. */ - one = 1; - setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)); - setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one)); + enable = !b->bus_client; + setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)); + setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &enable, sizeof(enable)); /* Increase the buffers to a MB */ fd_inc_rcvbuf(b->fd, 1024*1024); @@ -467,8 +467,8 @@ static int bus_socket_make_message(sd_bus *bus, size_t size, sd_bus_message **m) r = bus_message_from_malloc(bus->rbuffer, size, bus->fds, bus->n_fds, - !bus->bus_client && bus->ucred_valid ? &bus->ucred : NULL, - !bus->bus_client && bus->label[0] ? bus->label : NULL, + bus->ucred_valid ? &bus->ucred : NULL, + bus->label[0] ? bus->label : NULL, &t); if (r < 0) { free(b);