⬢ DragonFlyBSD Kernel Audit
DF-3424 / fix.diff
← back to finding ↓ download raw
--- a/sys/netinet6/in6_src.c
+++ b/sys/netinet6/in6_src.c
@@ -470,6 +470,10 @@ in6_pcbsetlport(struct in6_addr *laddr, struct inpcb *inp, struct thread *td)
 	 */
 	in_pcbportrange(&last, &first, portinfo->offset, step);
 	lport = last - first;
+	if (lport == 0) {
+		/* Degenerate sysctl port range (first == last): div-by-zero. */
+		return (EADDRNOTAVAIL);
+	}
 	count = lport / step;
 
 	lport = rounddown(cut % lport, step) + first;