- Make the reply buffer for IcmpSendEcho large enough to hold the reply,
even when testing a smaller size. This avoids a buffer overflow with ROS's
broken implementation.
- Avoid unnecessary initialization.
- Fix IcmpSendEcho return value check to succeed on Win2003.
- Don't free a string literal in the GetInterfaceName test.
}
ApiReturn = RtlGUIDFromString(&GuidString, &AdapterGUID);
}
ApiReturn = RtlGUIDFromString(&GuidString, &AdapterGUID);
- RtlFreeUnicodeString(&GuidString);
if (ApiReturn != 0)
{
skip("RtlGUIDFromString failed. Can't proceed\n");
if (ApiReturn != 0)
{
skip("RtlGUIDFromString failed. Can't proceed\n");
unsigned long ipaddr = INADDR_NONE;
DWORD bRet = 0, error = 0;
char SendData[32] = "Data Buffer";
unsigned long ipaddr = INADDR_NONE;
DWORD bRet = 0, error = 0;
char SendData[32] = "Data Buffer";
- PVOID ReplyBuffer = NULL;
DWORD ReplySize = 0;
SetLastError(0xDEADBEEF);
DWORD ReplySize = 0;
SetLastError(0xDEADBEEF);
}
ipaddr = 0x08080808; // 8.8.8.8
}
ipaddr = 0x08080808; // 8.8.8.8
+ ReplyBuffer = malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData));
ReplySize = sizeof(ICMP_ECHO_REPLY);
ReplySize = sizeof(ICMP_ECHO_REPLY);
- ReplyBuffer = malloc(ReplySize);
SetLastError(0xDEADBEEF);
bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 5000);
ok(!bRet, "IcmpSendEcho succeeded unexpectedly\n");
error = GetLastError();
SetLastError(0xDEADBEEF);
bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 5000);
ok(!bRet, "IcmpSendEcho succeeded unexpectedly\n");
error = GetLastError();
- ok(error == IP_GENERAL_FAILURE, "IcmpSendEcho returned unexpected error: %lu\n", error);
- free(ReplyBuffer);
+ ok(error == IP_BUF_TOO_SMALL /* Win2003 */ ||
+ error == IP_GENERAL_FAILURE /* Win10 */,
+ "IcmpSendEcho returned unexpected error: %lu\n", error);
ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
- ReplyBuffer = malloc(ReplySize);
SetLastError(0xDEADBEEF);
bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 5000);
ok(bRet, "IcmpSendEcho failed unexpectedly: %lu\n", GetLastError());
SetLastError(0xDEADBEEF);
bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 5000);
ok(bRet, "IcmpSendEcho failed unexpectedly: %lu\n", GetLastError());
IcmpCloseHandle(hIcmp);
}
IcmpCloseHandle(hIcmp);
}