Juan Lang : iphlpapi: Don' t allocate gobs of memory if the UDP table is empty.
Alexandre Julliard
julliard at winehq.org
Fri Nov 16 08:31:18 CST 2007
Module: wine
Branch: master
Commit: 7e584b4340c0a6c1224ce8be9d51c77da1cc1790
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7e584b4340c0a6c1224ce8be9d51c77da1cc1790
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Nov 15 11:04:12 2007 -0800
iphlpapi: Don't allocate gobs of memory if the UDP table is empty.
---
dlls/iphlpapi/iphlpapi_main.c | 9 ++++++---
dlls/iphlpapi/ipstats.c | 7 +++++--
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 92df631..db14d74 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -1665,8 +1665,10 @@ DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable, PDWORD pdwSize, BOOL bOrder)
ret = ERROR_INVALID_PARAMETER;
else {
DWORD numEntries = getNumUdpEntries();
- DWORD size = sizeof(MIB_UDPTABLE) + (numEntries - 1) * sizeof(MIB_UDPROW);
+ DWORD size = sizeof(MIB_UDPTABLE);
+ if (numEntries > 1)
+ size += (numEntries - 1) * sizeof(MIB_UDPROW);
if (!pUdpTable || *pdwSize < size) {
*pdwSize = size;
ret = ERROR_INSUFFICIENT_BUFFER;
@@ -1676,8 +1678,9 @@ DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable, PDWORD pdwSize, BOOL bOrder)
ret = getUdpTable(&table, GetProcessHeap(), 0);
if (!ret) {
- size = sizeof(MIB_UDPTABLE) + (table->dwNumEntries - 1) *
- sizeof(MIB_UDPROW);
+ size = sizeof(MIB_UDPTABLE);
+ if (table->dwNumEntries > 1)
+ size += (table->dwNumEntries - 1) * sizeof(MIB_UDPROW);
if (*pdwSize < size) {
*pdwSize = size;
ret = ERROR_INSUFFICIENT_BUFFER;
diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index 3605d64..a7fd40d 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -1112,9 +1112,12 @@ DWORD getUdpTable(PMIB_UDPTABLE *ppUdpTable, HANDLE heap, DWORD flags)
ret = ERROR_INVALID_PARAMETER;
else {
DWORD numEntries = getNumUdpEntries();
- PMIB_UDPTABLE table = HeapAlloc(heap, flags,
- sizeof(MIB_UDPTABLE) + (numEntries - 1) * sizeof(MIB_UDPROW));
+ DWORD size = sizeof(MIB_UDPTABLE);
+ PMIB_UDPTABLE table;
+ if (numEntries > 1)
+ size += (numEntries - 1) * sizeof(MIB_UDPROW);
+ table = HeapAlloc(heap, flags, size);
if (table) {
FILE *fp;
More information about the wine-cvs
mailing list