DF-3424 / fix.diff
--- 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; |