svn commit: r218256 - stable/8/sys/netinet
Daniel Eischen
deischen at FreeBSD.org
Fri Feb 4 08:51:46 UTC 2011
Author: deischen
Date: Fri Feb 4 08:51:45 2011
New Revision: 218256
URL: http://svn.freebsd.org/changeset/base/218256
Log:
MFC 217888
Prison check addresses set with multicast interface options.
Modified:
stable/8/sys/netinet/in_pcb.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/netinet/in_pcb.c
==============================================================================
--- stable/8/sys/netinet/in_pcb.c Fri Feb 4 08:11:44 2011 (r218255)
+++ stable/8/sys/netinet/in_pcb.c Fri Feb 4 08:51:45 2011 (r218256)
@@ -848,17 +848,20 @@ in_pcbconnect_setup(struct inpcb *inp, s
if (imo->imo_multicast_ifp != NULL) {
ifp = imo->imo_multicast_ifp;
IN_IFADDR_RLOCK();
- TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link)
- if (ia->ia_ifp == ifp)
+ TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link) {
+ if ((ia->ia_ifp == ifp) &&
+ (cred == NULL ||
+ prison_check_ip4(cred,
+ &ia->ia_addr.sin_addr) == 0))
break;
- if (ia == NULL) {
- IN_IFADDR_RUNLOCK();
+ }
+ if (ia == NULL)
error = EADDRNOTAVAIL;
- } else {
+ else {
laddr = ia->ia_addr.sin_addr;
- IN_IFADDR_RUNLOCK();
error = 0;
}
+ IN_IFADDR_RUNLOCK();
}
}
if (error)
More information about the svn-src-stable-8
mailing list