Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if.c
Show First 20 Lines • Show All 2,512 Lines • ▼ Show 20 Lines | case SIOCGIFFLAGS: | ||||
ifr->ifr_flagshigh = temp_flags >> 16; | ifr->ifr_flagshigh = temp_flags >> 16; | ||||
break; | break; | ||||
case SIOCGIFCAP: | case SIOCGIFCAP: | ||||
ifr->ifr_reqcap = ifp->if_capabilities; | ifr->ifr_reqcap = ifp->if_capabilities; | ||||
ifr->ifr_curcap = ifp->if_capenable; | ifr->ifr_curcap = ifp->if_capenable; | ||||
break; | break; | ||||
case SIOCGIFDATA: | |||||
{ | |||||
struct if_data ifd; | |||||
/* Ensure uninitialised padding is not leaked. */ | |||||
markj: I think we should `memset(&ifd, 0, sizeof(ifd))` first, to ensure that any uninitialized… | |||||
memset(&ifd, 0, sizeof(ifd)); | |||||
if_data_copy(ifp, &ifd); | |||||
error = copyout(&ifd, ifr_data_get_ptr(ifr), sizeof(ifd)); | |||||
break; | |||||
} | |||||
#ifdef MAC | #ifdef MAC | ||||
case SIOCGIFMAC: | case SIOCGIFMAC: | ||||
error = mac_ifnet_ioctl_get(td->td_ucred, ifr, ifp); | error = mac_ifnet_ioctl_get(td->td_ucred, ifr, ifp); | ||||
break; | break; | ||||
#endif | #endif | ||||
case SIOCGIFMETRIC: | case SIOCGIFMETRIC: | ||||
ifr->ifr_metric = ifp->if_metric; | ifr->ifr_metric = ifp->if_metric; | ||||
▲ Show 20 Lines • Show All 2,046 Lines • Show Last 20 Lines |
I think we should memset(&ifd, 0, sizeof(ifd)) first, to ensure that any uninitialized padding bytes don't get copied out.