From c642d8c7b9e4cd52f3efc155ce402330949c4f57 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Wed, 18 Mar 2015 14:34:54 +0100 Subject: [PATCH] priv: fallback to SOCK_DGRAM if SOCK_SEQPACKET not available --- src/daemon/priv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/daemon/priv.c b/src/daemon/priv.c index f00297ee..00e18846 100644 --- a/src/daemon/priv.c +++ b/src/daemon/priv.c @@ -591,8 +591,16 @@ priv_init(const char *chrootdir, int ctl, uid_t uid, gid_t gid) int pair[2]; /* Create socket pair */ - if (socketpair(AF_UNIX, SOCK_SEQPACKET, PF_UNSPEC, pair) < 0) - fatal("privsep", "unable to create socket pair for privilege separation"); + if (socketpair(AF_UNIX, SOCK_SEQPACKET, PF_UNSPEC, pair) < 0) { + if (errno == EAFNOSUPPORT || + errno == EOPNOTSUPP || + errno == EPROTONOSUPPORT) { + if (socketpair(AF_UNIX, SOCK_DGRAM, PF_UNSPEC, pair) < 0) { + fatal("privsep", + "unable to create socket pair for privilege separation"); + } + } + } priv_unprivileged_fd(pair[0]); priv_privileged_fd(pair[1]); -- 2.39.5