From 48c728dfefa3b9aff01f598ff9d3f909001b8e81 Mon Sep 17 00:00:00 2001 From: Mark Grondona Date: Thu, 10 Mar 2016 16:01:18 -0800 Subject: [PATCH] privsep: do nothing if !HAVE_RRESVPORT If we don't have rresvport() do not enable privsep during privsep_init() (it probably isn't used anyway). Also be sure to undefine usage of rresvport and rresvport_af since these symbols won't be found at compile or runtime. Fixes #74 Patch-Source: https://github.com/chaos/pdsh/commit/48c728dfefa3b9aff01f598ff9d3f909001b8e81 diff --git a/src/pdsh/privsep.c b/src/pdsh/privsep.c index 7e4134f..2297b17 100644 --- a/src/pdsh/privsep.c +++ b/src/pdsh/privsep.c @@ -123,6 +123,10 @@ static int send_rresvport (int pipefd, int fd, int lport) cmsg = (struct cmsghdr *) &buf; #endif +#if !HAVE_RRESVPORT + errno = ENOSYS; + return (-1); +#endif memset (&msg, 0, sizeof (msg)); @@ -162,6 +166,7 @@ static int send_rresvport (int pipefd, int fd, int lport) return (0); } +#if HAVE_RRESVPORT static int recv_rresvport (int pipefd, int *lptr) { int fd = -1; @@ -203,19 +208,23 @@ static int recv_rresvport (int pipefd, int *lptr) return (fd); } +#endif /* HAVE_RRESVPORT */ static int p_rresvport_af (int *port, int family) { #if HAVE_RRESVPORT_AF return rresvport_af (port, family); -#else +#elif HAVE_RRESVPORT /* Family must be AF_INET */ if (family != AF_INET) err ("%p: rresvport called with family != AF_INET!\n"); /* ignore family != AF_INET */ return rresvport (port); +#else + errno = ENOSYS; + return (-1); #endif } @@ -274,6 +283,9 @@ static int create_privileged_child (void) int privsep_init (void) { +#if !HAVE_RRESVPORT + return (0); +#endif if (geteuid() == getuid()) return 0; @@ -285,6 +297,9 @@ int privsep_init (void) int privsep_fini (void) { +#if !HAVE_RRESVPORT + return (0); +#endif int status; if (client_fd < 0 || cpid < 0) return (0); @@ -334,5 +349,11 @@ int privsep_rresvport_af (int *lport, int family) int privsep_rresvport (int *lport) { +#if HAVE_RRESVPORT return privsep_rresvport_af (lport, AF_INET); +#else + errno = ENOSYS; + return -1; +#endif /* HAVE_RRESVPORT */ + }