From: Sean Hefty Date: Mon, 26 Jul 2010 23:06:51 +0000 (-0700) Subject: nd/adapter: move up check against query length X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=4b10643cd3ba9593cb4dcfd787bf8b1285dbbb2b;p=~shefty%2Frdma-win.git nd/adapter: move up check against query length Check that the length of pInfo is large enough before dereferencing it. Signed-off-by: Sean Hefty --- diff --git a/trunk/ulp/netdirect2/user/nd_adapter.cpp b/trunk/ulp/netdirect2/user/nd_adapter.cpp index 475c1e61..6ced0d4a 100644 --- a/trunk/ulp/netdirect2/user/nd_adapter.cpp +++ b/trunk/ulp/netdirect2/user/nd_adapter.cpp @@ -116,16 +116,17 @@ Query(ND_ADAPTER_INFO* pInfo, SIZE_T* pcbInfo) WV_DEVICE_ATTRIBUTES attr; HRESULT hr; - if (pInfo != NULL && pInfo->InfoVersion != 1) { - return ND_NOT_SUPPORTED; - } - if (*pcbInfo < sizeof(ND_ADAPTER_INFO)) { hr = ND_BUFFER_OVERFLOW; goto out; } - hr = m_pWvDevice->Query(&attr); + if (pInfo != NULL && pInfo->InfoVersion != 1) { + hr = ND_NOT_SUPPORTED; + goto out; + } + + hr = NDConvertWVStatus(m_pWvDevice->Query(&attr)); if (FAILED(hr)) { goto out; } @@ -157,7 +158,7 @@ Query(ND_ADAPTER_INFO* pInfo, SIZE_T* pcbInfo) out: *pcbInfo = sizeof(ND_ADAPTER_INFO); - return NDConvertWVStatus(hr); + return hr; } STDMETHODIMP CNDAdapter::