diff options
-rw-r--r-- | OWNERS | 1 | ||||
-rwxr-xr-x | synadhd/wifi_hal/nan.cpp | 4 |
2 files changed, 4 insertions, 1 deletions
@@ -1,3 +1,4 @@ arabawy@google.com etancohen@google.com kumachang@google.com +wangroger@google.com diff --git a/synadhd/wifi_hal/nan.cpp b/synadhd/wifi_hal/nan.cpp index 9cd01c5..62be87b 100755 --- a/synadhd/wifi_hal/nan.cpp +++ b/synadhd/wifi_hal/nan.cpp @@ -1502,11 +1502,13 @@ class NanDiscEnginePrimitive : public WifiCommand { nan_hal_resp_t *rsp_vndr_data = NULL; NanResponseMsg rsp_data; + u32 len; if (reply.get_cmd() != NL80211_CMD_VENDOR || reply.get_vendor_data() == NULL) { ALOGD("Ignoring reply with cmd = %d", reply.get_cmd()); return NL_SKIP; } rsp_vndr_data = (nan_hal_resp_t *)reply.get_vendor_data(); + len = reply.get_vendor_data_len(); ALOGI("NanDiscEnginePrmitive::handle response\n"); memset(&rsp_data, 0, sizeof(NanResponseMsg)); rsp_data.response_type = get_response_type((WIFI_SUB_COMMAND)rsp_vndr_data->subcmd); @@ -1536,7 +1538,7 @@ class NanDiscEnginePrimitive : public WifiCommand rsp_data.body.subscribe_response.subscribe_id = mInstId; } else if (rsp_data.response_type == NAN_GET_CAPABILITIES) { memcpy((void *)&rsp_data.body.nan_capabilities, (void *)&rsp_vndr_data->capabilities, - sizeof(rsp_data.body.nan_capabilities)); + min(len, sizeof(rsp_data.body.nan_capabilities))); } GET_NAN_HANDLE(info)->mHandlers.NotifyResponse(id(), &rsp_data); |