From: Roy Marples Date: Thu, 24 Sep 2020 02:49:30 +0000 (+0100) Subject: FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum X-Git-Tag: v9.3.0~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cce22f81eec70c266071d5d3cfdf3931df203e59;p=thirdparty%2Fdhcpcd.git FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum --- diff --git a/src/if-bsd.c b/src/if-bsd.c index 8e832303..e80e1ffa 100644 --- a/src/if-bsd.c +++ b/src/if-bsd.c @@ -364,7 +364,7 @@ static int if_indirect_ioctl(struct dhcpcd_ctx *ctx, { struct ifreq ifr = { .ifr_flags = 0 }; -#if defined(PRIVSEP) && defined(HAVE_PLEDGE) +#if defined(PRIVSEP) && (defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE)) if (IN_PRIVSEP(ctx)) return (int)ps_root_indirectioctl(ctx, cmd, ifname, data, len); #else @@ -440,7 +440,7 @@ if_carrier(struct interface *ifp) int if_carrier_ifadata(struct interface *ifp, void *ifadata) { - int carrier = if_carrier(ifp); + int carrier = if_carrier0(ifp); struct if_data *ifdata; if (carrier != LINK_UNKNOWN || ifadata == NULL) diff --git a/src/privsep-bsd.c b/src/privsep-bsd.c index 2dc1d749..c9e31610 100644 --- a/src/privsep-bsd.c +++ b/src/privsep-bsd.c @@ -118,7 +118,7 @@ ps_root_doroute(void *data, size_t len) return err; } -#ifdef HAVE_PLEDGE +#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE) static ssize_t ps_root_doindirectioctl(unsigned long req, void *data, size_t len) { @@ -139,7 +139,9 @@ ps_root_doindirectioctl(unsigned long req, void *data, size_t len) return ps_root_doioctldom(PF_INET, req, &ifr, sizeof(ifr)); } +#endif +#ifdef HAVE_PLEDGE static ssize_t ps_root_doifignoregroup(void *data, size_t len) { @@ -177,10 +179,12 @@ ps_root_os(struct ps_msghdr *psm, struct msghdr *msg, break; case PS_ROUTE: return ps_root_doroute(data, len); -#ifdef HAVE_PLEDGE +#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE) case PS_IOCTLINDIRECT: err = ps_root_doindirectioctl(psm->ps_flags, data, len); break; +#endif +#ifdef HAVE_PLEDGE case PS_IFIGNOREGRP: return ps_root_doifignoregroup(data, len); #endif @@ -232,7 +236,7 @@ ps_root_route(struct dhcpcd_ctx *ctx, void *data, size_t len) return ps_root_readerror(ctx, data, len); } -#ifdef HAVE_PLEDGE +#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE) ssize_t ps_root_indirectioctl(struct dhcpcd_ctx *ctx, unsigned long request, const char *ifname, void *data, size_t len)