aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2010-09-28 19:17:39 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2010-09-28 19:17:39 +0000
commit14eed132b167aa95bb2c90adbbd69e609a9a7328 (patch)
tree437e8f1bcfdcee2255b501eec6c40c069d449173 /sys
parentbb3019e917d6a19eba26c283c56d5a7a59fe8ef1 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/in.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 8a1b0b6a472a..cc95f7973a00 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -252,12 +252,15 @@ in_control(so, cmd, data, ifp, td)
* the first one on the interface, if possible.
*/
if (ifp) {
+ struct in_addr tmp;
+
dst = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr;
LIST_FOREACH(iap, INADDR_HASH(dst.s_addr), ia_hash)
if (iap->ia_ifp == ifp &&
iap->ia_addr.sin_addr.s_addr == dst.s_addr) {
+ tmp.s_addr = dst.s_addr;
if (td == NULL || !prison_ip(
- td->td_ucred, 0, &dst.s_addr))
+ td->td_ucred, 0, &tmp.s_addr))
ia = iap;
break;
}
@@ -265,9 +268,11 @@ in_control(so, cmd, data, ifp, td)
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
iap = ifatoia(ifa);
if (iap->ia_addr.sin_family == AF_INET) {
+ tmp.s_addr =
+ iap->ia_addr.sin_addr.s_addr;
if (td != NULL &&
prison_ip(td->td_ucred, 0,
- &iap->ia_addr.sin_addr.s_addr))
+ &tmp.s_addr))
continue;
ia = iap;
break;