Fixed a few bugs in network interface handling (code & test).
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 829ec76..2ef5b31 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -352,7 +352,7 @@
toIPAddressString(getInterfaceMaskByIndex(table->indexes[ndx]),
ptr->IpAddressList.IpMask.String);
if (ndx < table->numIndexes + 1)
- ptr->Next = &pAdapterInfo[ndx + 1];
+ ptr->Next = (ndx == table->numIndexes - 1) ? NULL : &pAdapterInfo[ndx + 1];
}
ret = NO_ERROR;
}
diff --git a/dlls/netapi32/tests/wksta.c b/dlls/netapi32/tests/wksta.c
index 2b99f2a..12e278b 100644
--- a/dlls/netapi32/tests/wksta.c
+++ b/dlls/netapi32/tests/wksta.c
@@ -162,7 +162,7 @@
ok(bufPtr != NULL, "got data back");
ok(entriesRead > 0, "read at least one transport");
ok(totalEntries > 0, "at least one transport");
- NetApiBufferFree(bufPtr);
+ pNetApiBufferFree(bufPtr);
}
}
diff --git a/dlls/netapi32/wksta.c b/dlls/netapi32/wksta.c
index 32adb7c..0c61e00 100644
--- a/dlls/netapi32/wksta.c
+++ b/dlls/netapi32/wksta.c
@@ -156,9 +156,9 @@
for (n_adapt = 0, ptr = info; ptr; ptr = ptr->Next)
n_adapt++;
- size_needed = n_adapt * (sizeof(WKSTA_TRANSPORT_INFO_0)
+ size_needed = n_adapt * sizeof(WKSTA_TRANSPORT_INFO_0)
+ n_adapt * TRANSPORT_NAME_LEN * sizeof (WCHAR)
- + n_adapt * 13 * sizeof (WCHAR));
+ + n_adapt * 13 * sizeof (WCHAR);
if (prefmaxlen == MAX_PREFERRED_LENGTH)
NetApiBufferAllocate( size_needed, (LPVOID *) pbuf);
else