diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188eu/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8188eu/os_dep/linux/ioctl_linux.c index f918902e2bbd..d3a594599f45 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8188eu/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8188eu/os_dep/linux/ioctl_linux.c @@ -3946,6 +3946,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4090,6 +4093,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188fu/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8188fu/os_dep/linux/ioctl_linux.c index f918902e2bbd..d3a594599f45 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8188fu/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8188fu/os_dep/linux/ioctl_linux.c @@ -3946,6 +3946,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4090,6 +4093,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c index 9f0e1723f049..e3c53bfc7774 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c @@ -4942,6 +4942,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, struct iw_point *pdata = &wrqu->data; struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + DBG_871X( "[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen( extra ) ); _rtw_memcpy( pwdinfo->nego_ssid, extra, strlen( extra ) ); pwdinfo->nego_ssidlen = strlen( extra ); @@ -5107,6 +5110,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; DBG_871X( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); _rtw_memset( pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN ); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189fs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189fs/os_dep/linux/ioctl_linux.c index 65a8bb28de29..d7b4a6f158c8 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8189fs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8189fs/os_dep/linux/ioctl_linux.c @@ -3946,6 +3946,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4090,6 +4093,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/ioctl_linux.c index 26b3c658ef08..8d3b120e5c6a 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/ioctl_linux.c @@ -4093,6 +4093,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, struct iw_point *pdata = &wrqu->data; struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4237,6 +4240,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723bu/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8723bu/os_dep/linux/ioctl_linux.c index 55347bb3e399..4fa7b4f4e609 100755 --- a/drivers/net/wireless/rockchip_wlan/rtl8723bu/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723bu/os_dep/linux/ioctl_linux.c @@ -4895,6 +4895,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, struct iw_point *pdata = &wrqu->data; struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + DBG_871X( "[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen( extra ) ); _rtw_memcpy( pwdinfo->nego_ssid, extra, strlen( extra ) ); pwdinfo->nego_ssidlen = strlen( extra ); @@ -5060,6 +5063,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; DBG_871X( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); _rtw_memset( pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN ); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723cs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8723cs/os_dep/linux/ioctl_linux.c index 09ea7e8a4c27..214db575739e 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723cs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723cs/os_dep/linux/ioctl_linux.c @@ -3932,6 +3932,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4076,6 +4079,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/ioctl_linux.c index 191126f1cf74..0f1ee28f5bf2 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723ds/os_dep/linux/ioctl_linux.c @@ -3952,6 +3952,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4096,6 +4099,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8821cs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8821cs/os_dep/linux/ioctl_linux.c index bc7fa6eb52f8..5cfbf7da84af 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8821cs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8821cs/os_dep/linux/ioctl_linux.c @@ -3946,6 +3946,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4090,6 +4093,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8822be/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8822be/os_dep/linux/ioctl_linux.c index d57baaeca666..dacec2d3524e 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8822be/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8822be/os_dep/linux/ioctl_linux.c @@ -4519,6 +4519,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, struct iw_point *pdata = &wrqu->data; struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4663,6 +4666,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); diff --git a/drivers/net/wireless/rockchip_wlan/rtl8822bs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8822bs/os_dep/linux/ioctl_linux.c index 7c8c7b45cdaa..1445678d9986 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8822bs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8822bs/os_dep/linux/ioctl_linux.c @@ -3941,6 +3941,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); _rtw_memcpy(pwdinfo->nego_ssid, extra, strlen(extra)); pwdinfo->nego_ssidlen = strlen(extra); @@ -4085,6 +4088,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN);