Module: wine Branch: master Commit: 182ec0a50d28fb09070ceb0c3c50e0f4e1ba810d URL: http://source.winehq.org/git/wine.git/?a=commit;h=182ec0a50d28fb09070ceb0c3c...
Author: Juan Lang juan.lang@gmail.com Date: Mon Nov 5 10:25:11 2007 -0800
wsock32: Check return value rather than returned size for error.
---
dlls/wsock32/socket.c | 24 +++++++++--------------- 1 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/dlls/wsock32/socket.c b/dlls/wsock32/socket.c index 28b526c..d326443 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)