diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2015-07-23 16:08:37 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-08-03 15:39:44 +0530 |
| commit | cbce148b15405fe4c8461c58aceff245e592153d (patch) | |
| tree | 8876354d8ff460575cfded75a9377bafb50e37dd | |
| parent | c915650dac05fee3ff315a7701007b3f3b24e2c5 (diff) | |
qcacld-2.0: Fix buffer overwrite problem in GETWESMODE
If (len + 1) is greater than priv_data.total_len then copy_to_user
results in writing more data than the buffer can hold.
Fix this by writing mininum of (len + 1) and priv_data.total_len.
Change-Id: I1ce46ee763dbd38a7e6a362d423a8038467ac503
CRs-Fixed: 865527
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index b8f02ba51a74..78c8e26159c6 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -4966,8 +4966,8 @@ static int hdd_driver_command(hdd_adapter_t *pAdapter, tANI_U8 len = 0; len = scnprintf(extra, sizeof(extra), "%s %d", command, wesMode); - if (copy_to_user(priv_data.buf, &extra, len + 1)) - { + len = VOS_MIN(priv_data.total_len, len + 1); + if (copy_to_user(priv_data.buf, &extra, len)) { VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, "%s: failed to copy data to user buffer", __func__); ret = -EFAULT; |
