From: "Bernhard Übelacker" Subject: [PATCH] inetmib1: Fix endianess issue with dwLocalAddr and dwLocalPort. Message-Id: <20211216102719.39547-1-bernhardu@mailbox.org> Date: Thu, 16 Dec 2021 11:27:19 +0100 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52224 Signed-off-by: Bernhard Übelacker --- dlls/inetmib1/main.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dlls/inetmib1/main.c b/dlls/inetmib1/main.c index 6345573350e..c484e5390c4 100644 --- a/dlls/inetmib1/main.c +++ b/dlls/inetmib1/main.c @@ -27,6 +27,7 @@ #include "winbase.h" #include "snmp.h" #include "iphlpapi.h" +#include "winternl.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(inetmib1); @@ -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 = RtlUshortByteSwap(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 = RtlUlongByteSwap(key->dwLocalAddr) - RtlUlongByteSwap(value->dwLocalAddr); if (ret == 0) - ret = key->dwLocalPort - value->dwLocalPort; + ret = RtlUshortByteSwap(key->dwLocalPort) - RtlUshortByteSwap(value->dwLocalPort); return ret; } @@ -1269,8 +1270,10 @@ static BOOL mib2UdpEntryQuery(BYTE bPduType, SnmpVarBind *pVarBind, udpTable->table[tableIndex - 1].dwLocalAddr); if (ret) { + UINT id; oid.idLength = 1; - oid.ids = &udpTable->table[tableIndex - 1].dwLocalPort; + id = RtlUshortByteSwap(udpTable->table[tableIndex - 1].dwLocalPort); + oid.ids = &id; ret = SnmpUtilOidAppend(&pVarBind->name, &oid); } } -- 2.34.1