Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F131866381
D18333.id51114.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D18333.id51114.diff
View Options
Index: head/sys/net/if.h
===================================================================
--- head/sys/net/if.h
+++ head/sys/net/if.h
@@ -271,6 +271,7 @@
int ifm_addrs; /* like rtm_addrs */
int ifm_flags; /* value of if_flags */
u_short ifm_index; /* index for associated ifp */
+ u_short _ifm_spare1;
struct if_data ifm_data;/* statistics and other data about if */
};
@@ -296,6 +297,7 @@
u_short _ifm_spare1; /* spare space to grow if_index, see if_var.h */
u_short ifm_len; /* length of if_msghdrl incl. if_data */
u_short ifm_data_off; /* offset of if_data from beginning */
+ int _ifm_spare2;
struct if_data ifm_data;/* statistics and other data about if */
};
@@ -311,6 +313,7 @@
int ifam_addrs; /* like rtm_addrs */
int ifam_flags; /* value of ifa_flags */
u_short ifam_index; /* index for associated ifp */
+ u_short _ifam_spare1;
int ifam_metric; /* value of ifa_ifp->if_metric */
};
@@ -352,6 +355,7 @@
int ifmam_addrs; /* like rtm_addrs */
int ifmam_flags; /* value of ifa_flags */
u_short ifmam_index; /* index for associated ifp */
+ u_short _ifmam_spare1;
};
/*
Index: head/sys/net/route.h
===================================================================
--- head/sys/net/route.h
+++ head/sys/net/route.h
@@ -251,6 +251,7 @@
u_char rtm_version; /* future binary compatibility */
u_char rtm_type; /* message type */
u_short rtm_index; /* index for associated ifp */
+ u_short _rtm_spare1;
int rtm_flags; /* flags, incl. kern & message, e.g. DONE */
int rtm_addrs; /* bitmask identifying sockaddrs in msg */
pid_t rtm_pid; /* identify sender */
Index: head/sys/net/rtsock.c
===================================================================
--- head/sys/net/rtsock.c
+++ head/sys/net/rtsock.c
@@ -83,6 +83,7 @@
int32_t ifm_addrs;
int32_t ifm_flags;
uint16_t ifm_index;
+ uint16_t _ifm_spare1;
struct if_data ifm_data;
};
@@ -96,6 +97,7 @@
uint16_t _ifm_spare1;
uint16_t ifm_len;
uint16_t ifm_data_off;
+ uint32_t _ifm_spare2;
struct if_data ifm_data;
};
@@ -1219,8 +1221,11 @@
dlen = ALIGN(len) - len;
if (buflen < dlen)
cp = NULL;
- else
+ else {
+ bzero(cp, dlen);
+ cp += dlen;
buflen -= dlen;
+ }
}
len = ALIGN(len);
@@ -1577,6 +1582,8 @@
if (w->w_req && w->w_tmem) {
struct rt_msghdr *rtm = (struct rt_msghdr *)w->w_tmem;
+ bzero(&rtm->rtm_index,
+ sizeof(*rtm) - offsetof(struct rt_msghdr, rtm_index));
if (rt->rt_flags & RTF_GWFLAG_COMPAT)
rtm->rtm_flags = RTF_GATEWAY |
(rt->rt_flags & ~RTF_GWFLAG_COMPAT);
@@ -1584,7 +1591,6 @@
rtm->rtm_flags = rt->rt_flags;
rt_getmetrics(rt, &rtm->rtm_rmx);
rtm->rtm_index = rt->rt_ifp->if_index;
- rtm->rtm_errno = rtm->rtm_pid = rtm->rtm_seq = 0;
rtm->rtm_addrs = info.rti_addrs;
error = SYSCTL_OUT(w->w_req, (caddr_t)rtm, size);
return (error);
@@ -1612,6 +1618,7 @@
ifm32->_ifm_spare1 = 0;
ifm32->ifm_len = sizeof(*ifm32);
ifm32->ifm_data_off = offsetof(struct if_msghdrl32, ifm_data);
+ ifm32->_ifm_spare2 = 0;
ifd = &ifm32->ifm_data;
} else
#endif
@@ -1622,6 +1629,7 @@
ifm->_ifm_spare1 = 0;
ifm->ifm_len = sizeof(*ifm);
ifm->ifm_data_off = offsetof(struct if_msghdrl, ifm_data);
+ ifm->_ifm_spare2 = 0;
ifd = &ifm->ifm_data;
}
@@ -1647,6 +1655,7 @@
ifm32->ifm_addrs = info->rti_addrs;
ifm32->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
ifm32->ifm_index = ifp->if_index;
+ ifm32->_ifm_spare1 = 0;
ifd = &ifm32->ifm_data;
} else
#endif
@@ -1654,6 +1663,7 @@
ifm->ifm_addrs = info->rti_addrs;
ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
ifm->ifm_index = ifp->if_index;
+ ifm->_ifm_spare1 = 0;
ifd = &ifm->ifm_data;
}
@@ -1722,6 +1732,7 @@
ifam->ifam_addrs = info->rti_addrs;
ifam->ifam_flags = ifa->ifa_flags;
ifam->ifam_index = ifa->ifa_ifp->if_index;
+ ifam->_ifam_spare1 = 0;
ifam->ifam_metric = ifa->ifa_ifp->if_metric;
return (SYSCTL_OUT(w->w_req, w->w_tmem, len));
@@ -1833,6 +1844,7 @@
ifmam->ifmam_index = ifma->ifma_ifp->if_index;
ifmam->ifmam_flags = 0;
ifmam->ifmam_addrs = info.rti_addrs;
+ ifmam->_ifmam_spare1 = 0;
error = SYSCTL_OUT(w->w_req, w->w_tmem, len);
if (error != 0)
break;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 12, 7:50 PM (14 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23638516
Default Alt Text
D18333.id51114.diff (4 KB)
Attached To
Mode
D18333: Fix routing sysctl leaks.
Attached
Detach File
Event Timeline
Log In to Comment