From f0a29c9e9cd72d8e4b9839c34903f5dfae5ddc75 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 21 Sep 2025 14:00:00 +0200 Subject: [PATCH] [NETSH] Improve MatchToken and implement MatchEnumTag --- base/applications/network/netsh/netsh.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/base/applications/network/netsh/netsh.c b/base/applications/network/netsh/netsh.c index 16abd0315b4..e9428def786 100644 --- a/base/applications/network/netsh/netsh.c +++ b/base/applications/network/netsh/netsh.c @@ -203,8 +203,23 @@ MatchEnumTag( _In_ const TOKEN_VALUE *pEnumTable, _Out_ PDWORD pdwValue) { - DPRINT1("MatchEnumTag()\n"); - return 0; + DWORD i; + + DPRINT("MatchEnumTag(%p %p %lu %p %p)\n", hModule, pwcArg, dwNumArg, pEnumTable, pdwValue); + + if ((pEnumTable == NULL) || (pdwValue == NULL)) + return ERROR_INVALID_PARAMETER; + + for (i = 0; i < dwNumArg; i++) + { + if (MatchToken(pwcArg, pEnumTable[i].pwszToken)) + { + *pdwValue = pEnumTable[i].dwValue; + return ERROR_SUCCESS; + } + } + + return ERROR_NOT_FOUND; } BOOL @@ -213,7 +228,11 @@ MatchToken( _In_ LPCWSTR pwszUserToken, _In_ LPCWSTR pwszCmdToken) { - DPRINT1("MatchToken %S %S\n", pwszUserToken, pwszCmdToken); + DPRINT("MatchToken(%S %S)\n", pwszUserToken, pwszCmdToken); + + if ((pwszUserToken == NULL) || (pwszCmdToken == NULL)) + return FALSE; + return (_wcsnicmp(pwszUserToken, pwszCmdToken, wcslen(pwszUserToken)) == 0) ? TRUE : FALSE; }