From fc348f519bab01aed4e8f2dd9c0260fea87025aa Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 9 Nov 2020 15:30:34 +0100 Subject: api: relax IsPoolMember estimation Signed-off-by: Jason A. Donenfeld --- api/adapter.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/api/adapter.c b/api/adapter.c index c929b64..774433a 100644 --- a/api/adapter.c +++ b/api/adapter.c @@ -471,40 +471,27 @@ static BOOL IsPoolMember(_In_z_ const WCHAR *Pool, _In_ HDEVINFO DevInfo, _In_ SP_DEVINFO_DATA *DevInfoData) { WCHAR *DeviceDesc = GetDeviceRegistryString(DevInfo, DevInfoData, SPDRP_DEVICEDESC); - if (!DeviceDesc) - { - LOG(WINTUN_LOG_ERR, L"Failed to get adapter description"); - return FALSE; - } + WCHAR *FriendlyName = GetDeviceRegistryString(DevInfo, DevInfoData, SPDRP_FRIENDLYNAME); DWORD LastError = ERROR_SUCCESS; BOOL Ret = FALSE; - WCHAR *FriendlyName = GetDeviceRegistryString(DevInfo, DevInfoData, SPDRP_FRIENDLYNAME); - if (!FriendlyName) - { - LastError = LOG(WINTUN_LOG_ERR, L"Failed to get adapter friendly name"); - goto cleanupDeviceDesc; - } WCHAR PoolDeviceTypeName[MAX_POOL_DEVICE_TYPE]; if (!GetPoolDeviceTypeName(Pool, PoolDeviceTypeName)) { LastError = GetLastError(); - goto cleanupFriendlyName; - } - if (!_wcsicmp(FriendlyName, PoolDeviceTypeName) || !_wcsicmp(DeviceDesc, PoolDeviceTypeName)) - { - Ret = TRUE; - goto cleanupFriendlyName; - } - RemoveNumberedSuffix(FriendlyName); - RemoveNumberedSuffix(DeviceDesc); - if (!_wcsicmp(FriendlyName, PoolDeviceTypeName) || !_wcsicmp(DeviceDesc, PoolDeviceTypeName)) - { - Ret = TRUE; - goto cleanupFriendlyName; - } -cleanupFriendlyName: + goto cleanupNames; + } + Ret = (FriendlyName && !_wcsicmp(FriendlyName, PoolDeviceTypeName)) || + (DeviceDesc && !_wcsicmp(DeviceDesc, PoolDeviceTypeName)); + if (Ret) + goto cleanupNames; + if (FriendlyName) + RemoveNumberedSuffix(FriendlyName); + if (DeviceDesc) + RemoveNumberedSuffix(DeviceDesc); + Ret = (FriendlyName && !_wcsicmp(FriendlyName, PoolDeviceTypeName)) || + (DeviceDesc && !_wcsicmp(DeviceDesc, PoolDeviceTypeName)); +cleanupNames: Free(FriendlyName); -cleanupDeviceDesc: Free(DeviceDesc); SetLastError(LastError); return Ret; -- cgit v1.2.3-59-g8ed1b