From 182ec0a50d28fb09070ceb0c3c50e0f4e1ba810d Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Mon, 5 Nov 2007 10:25:11 -0800 Subject: [PATCH] wsock32: Check return value rather than returned size for error. --- dlls/wsock32/socket.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/dlls/wsock32/socket.c b/dlls/wsock32/socket.c index 28b526cf674..d326443a6fd 100644 --- a/dlls/wsock32/socket.c +++ b/dlls/wsock32/socket.c @@ -441,11 +441,9 @@ DWORD WINAPI WsControl(DWORD protocol, if (!pcbResponseInfoLen) return ERROR_BAD_ENVIRONMENT; - GetIpForwardTable(NULL, &routeTableSize, FALSE); - if (!routeTableSize) { - *pcbResponseInfoLen = 0; - return WSCTL_SUCCESS; - } + ret = GetIpForwardTable(NULL, &routeTableSize, FALSE); + if (ret != ERROR_INSUFFICIENT_BUFFER) + return ret; numRoutes = (routeTableSize - sizeof(MIB_IPFORWARDTABLE)) / sizeof(MIB_IPFORWARDROW) + 1; if (*pcbResponseInfoLen < sizeof(IPRouteEntry) * numRoutes) @@ -494,11 +492,9 @@ DWORD WINAPI WsControl(DWORD protocol, if (!pcbResponseInfoLen) return ERROR_BAD_ENVIRONMENT; - GetIpNetTable(NULL, &arpTableSize, FALSE); - if (!arpTableSize) { - *pcbResponseInfoLen = 0; - return WSCTL_SUCCESS; - } + ret = GetIpNetTable(NULL, &arpTableSize, FALSE); + if (ret != ERROR_INSUFFICIENT_BUFFER) + return ret; numEntries = (arpTableSize - sizeof(MIB_IPNETTABLE)) / sizeof(MIB_IPNETROW) + 1; if (*pcbResponseInfoLen < sizeof(MIB_IPNETROW) * numEntries) @@ -536,11 +532,9 @@ DWORD WINAPI WsControl(DWORD protocol, if (!pcbResponseInfoLen) return ERROR_BAD_ENVIRONMENT; - GetTcpTable(NULL, &tcpTableSize, FALSE); - if (!tcpTableSize) { - *pcbResponseInfoLen = 0; - return WSCTL_SUCCESS; - } + ret = GetTcpTable(NULL, &tcpTableSize, FALSE); + if (ret != ERROR_INSUFFICIENT_BUFFER) + return ret; numEntries = (tcpTableSize - sizeof(MIB_TCPTABLE)) / sizeof(MIB_TCPROW) + 1; if (*pcbResponseInfoLen < sizeof(MIB_TCPROW) * numEntries) -- 2.11.4.GIT