X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbus-proxyd%2Fbus-proxyd.c;h=60490d51663ffbf1241065651d25b296226994bb;hp=b87dffe0e8b77202d4858feda63e8f3b6858b63e;hb=eff05270986a13e7de93ae16311f654d3f7c166f;hpb=96415cad2fdd8d280ae94b02651b5f826a2f7f3d;ds=sidebyside diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c index b87dffe0e..60490d516 100644 --- a/src/bus-proxyd/bus-proxyd.c +++ b/src/bus-proxyd/bus-proxyd.c @@ -358,40 +358,6 @@ static int process_hello(sd_bus *a, sd_bus *b, sd_bus_message *m, bool *got_hell return 1; } -static int getpeersec(int fd, char **ret) { - socklen_t n = 64; - char *s; - int r; - - assert(fd >= 0); - assert(ret); - - s = new0(char, n); - if (!s) - return -ENOMEM; - - r = getsockopt(fd, SOL_SOCKET, SO_PEERSEC, s, &n); - if (r < 0) { - free(s); - - if (errno != ERANGE) - return r; - - s = new0(char, n); - if (!s) - return -ENOMEM; - - r = getsockopt(fd, SOL_SOCKET, SO_PEERSEC, s, &n); - if (r < 0) { - free(s); - return r; - } - } - - *ret = s; - return 0; -} - int main(int argc, char *argv[]) { _cleanup_bus_unref_ sd_bus *a = NULL, *b = NULL; @@ -427,16 +393,7 @@ int main(int argc, char *argv[]) { sd_is_socket(out_fd, AF_UNIX, 0, 0) > 0; if (is_unix) { - socklen_t l = sizeof(ucred); - - r = getsockopt(in_fd, SOL_SOCKET, SO_PEERCRED, &ucred, &l); - if (r < 0) { - r = -errno; - goto finish; - } - - assert(l == sizeof(ucred)); - + getpeercred(in_fd, &ucred); getpeersec(in_fd, &peersec); }