diff options
| -rw-r--r--[-rwxr-xr-x] | drivers/misc/mediatek/connectivity/conn_soc/drv_wlan/mt_wifi/wlan/os/linux/gl_wext.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/misc/mediatek/connectivity/conn_soc/drv_wlan/mt_wifi/wlan/os/linux/gl_wext.c b/drivers/misc/mediatek/connectivity/conn_soc/drv_wlan/mt_wifi/wlan/os/linux/gl_wext.c index b1c3d2087..5dd30405e 100755..100644 --- a/drivers/misc/mediatek/connectivity/conn_soc/drv_wlan/mt_wifi/wlan/os/linux/gl_wext.c +++ b/drivers/misc/mediatek/connectivity/conn_soc/drv_wlan/mt_wifi/wlan/os/linux/gl_wext.c @@ -2557,7 +2557,7 @@ wext_get_essid ( kalMemFree(prSsid, VIR_MEM_TYPE, sizeof(PARAM_SSID_T)); - return 0; + return rStatus; } /* wext_get_essid */ @@ -4235,13 +4235,13 @@ wext_support_ioctl ( break; } - if (u4ExtraSize < IW_ESSID_MAX_SIZE) { - DBGLOG(INIT, INFO, ("[wifi] iwr->u.essid.length: %ld too small\n", u4ExtraSize)); + if (u4ExtraSize != IW_ESSID_MAX_SIZE && u4ExtraSize != IW_ESSID_MAX_SIZE + 1) { + DBGLOG(INIT, ERROR, ("[wifi] iwr->u.essid.length: %ld error\n", u4ExtraSize)); ret = -E2BIG; /* let caller try larger buffer */ break; } - prExtraBuf = kalMemAlloc(IW_ESSID_MAX_SIZE, VIR_MEM_TYPE); + prExtraBuf = kalMemAlloc(IW_ESSID_MAX_SIZE + 1, VIR_MEM_TYPE); if (!prExtraBuf) { ret = -ENOMEM; break; @@ -4251,12 +4251,12 @@ wext_support_ioctl ( ret = wext_get_essid(prDev, NULL, &iwr->u.essid, prExtraBuf); if (ret == 0) { - if (copy_to_user(iwr->u.essid.pointer, prExtraBuf, u4ExtraSize)) { + if (copy_to_user(iwr->u.essid.pointer, prExtraBuf, iwr->u.essid.length)) { ret = -EFAULT; } } - kalMemFree(prExtraBuf, VIR_MEM_TYPE, IW_ESSID_MAX_SIZE); + kalMemFree(prExtraBuf, VIR_MEM_TYPE, IW_ESSID_MAX_SIZE + 1); prExtraBuf = NULL; break; |
