diff options
| author | Roy Marples <roy@marples.name> | 2020-09-24 03:49:30 +0100 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2020-09-24 03:49:30 +0100 |
| commit | cce22f81eec70c266071d5d3cfdf3931df203e59 (patch) | |
| tree | 369a22cb6bb7fbaf09dbdda0b0b881232508daee | |
| parent | ec4013c25f1d3fea81fff0b8410dc75a4c7eaa30 (diff) | |
| download | dhcpcd-cce22f81eec70c266071d5d3cfdf3931df203e59.tar.xz | |
FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum
| -rw-r--r-- | src/if-bsd.c | 4 | ||||
| -rw-r--r-- | src/privsep-bsd.c | 10 |
2 files changed, 9 insertions, 5 deletions
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) |
