changeset 5505:5aedb51585b6 draft

privsep: Ensure command is for BPF first and interface valid second Otherwise we won't call inet_dispatch on a message meant for it.
author Roy Marples <roy@marples.name>
date Fri, 09 Oct 2020 14:45:57 +0100
parents 4d665b4bede5
children 9c7bd8bd8729
files src/privsep-bpf.c
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/privsep-bpf.c	Wed Oct 07 16:21:26 2020 +0100
+++ b/src/privsep-bpf.c	Fri Oct 09 14:45:57 2020 +0100
@@ -253,6 +253,17 @@
 	uint8_t *bpf;
 	size_t bpf_len;
 
+	switch (psm->ps_cmd) {
+#ifdef ARP
+	case PS_BPF_ARP:
+#endif
+	case PS_BPF_BOOTP:
+		break;
+	default:
+		errno = ENOTSUP;
+		return -1;
+	}
+
 	ifp = if_findindex(ctx->ifaces, psm->ps_id.psi_ifindex);
 	/* interface may have departed .... */
 	if (ifp == NULL)
@@ -270,9 +281,6 @@
 	case PS_BPF_BOOTP:
 		dhcp_packet(ifp, bpf, bpf_len, (unsigned int)psm->ps_flags);
 		break;
-	default:
-		errno = ENOTSUP;
-		return -1;
 	}
 
 	return 1;