From 749d5efa7efc5a541f914aed591e75350c72a58c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= Date: Thu, 16 Dec 2021 11:27:19 +0100 Subject: [PATCH] inetmib1: Fix endianess issue with dwLocalAddr and dwLocalPort. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52224 Signed-off-by: Bernhard Übelacker Signed-off-by: Alexandre Julliard (cherry picked from commit 9145b551b2ebe17c1e310790db5c09da24a1beb5) Signed-off-by: Michael Stefaniuc --- dlls/inetmib1/main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/inetmib1/main.c b/dlls/inetmib1/main.c index 6345573350e..31dc4d5e8e2 100644 --- a/dlls/inetmib1/main.c +++ b/dlls/inetmib1/main.c @@ -25,6 +25,7 @@ #include "windef.h" #include "winbase.h" +#include "winsock2.h" #include "snmp.h" #include "iphlpapi.h" #include "wine/debug.h" @@ -1217,7 +1218,7 @@ static void oidToUdpRow(AsnObjectIdentifier *oid, void *dst) assert(oid && oid->idLength >= 5); row->dwLocalAddr = oidToIpAddr(oid); - row->dwLocalPort = oid->ids[4]; + row->dwLocalPort = htons(oid->ids[4]); } static int __cdecl compareUdpRow(const void *a, const void *b) @@ -1225,9 +1226,9 @@ static int __cdecl compareUdpRow(const void *a, const void *b) const MIB_UDPROW *key = a, *value = b; int ret; - ret = key->dwLocalAddr - value->dwLocalAddr; + ret = ntohl(key->dwLocalAddr) - ntohl(value->dwLocalAddr); if (ret == 0) - ret = key->dwLocalPort - value->dwLocalPort; + ret = ntohs(key->dwLocalPort) - ntohs(value->dwLocalPort); return ret; } @@ -1269,8 +1270,9 @@ static BOOL mib2UdpEntryQuery(BYTE bPduType, SnmpVarBind *pVarBind, udpTable->table[tableIndex - 1].dwLocalAddr); if (ret) { + UINT id = ntohs(udpTable->table[tableIndex - 1].dwLocalPort); oid.idLength = 1; - oid.ids = &udpTable->table[tableIndex - 1].dwLocalPort; + oid.ids = &id; ret = SnmpUtilOidAppend(&pVarBind->name, &oid); } }