diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-11-09 15:30:34 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-11-09 15:34:38 +0100 |
commit | fc348f519bab01aed4e8f2dd9c0260fea87025aa (patch) | |
tree | 2c5a62425d70a007105bd8bf325bec742f9ea4e7 /api/adapter.c | |
parent | api: do not call UpdateDriverForPlugAndPlayDevicesW (diff) | |
download | wintun-fc348f519bab01aed4e8f2dd9c0260fea87025aa.tar.xz wintun-fc348f519bab01aed4e8f2dd9c0260fea87025aa.zip |
api: relax IsPoolMember estimation
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r-- | api/adapter.c | 41 |
1 files 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; |