Check return value from GetVersionEx (even though the MSDN example doesnt) and zero out the LPOSVERSIONINFOEX struct before getting the version. This may fix the "johnboy" [major=-858993460,minor=-858993460] problem.

svn:r6233
This commit is contained in:
Nick Mathewson 2006-03-24 05:26:33 +00:00
parent 444e3b8eb2
commit 6d9632ba23

View File

@ -742,8 +742,15 @@ get_uname(void)
{ VER_SUITE_TERMINAL, " {terminal services}" }, { VER_SUITE_TERMINAL, " {terminal services}" },
{ 0, NULL }, { 0, NULL },
}; };
memset(&info, 0, sizeof(info));
info.dwOSVersionInfoSize = sizeof(info); info.dwOSVersionInfoSize = sizeof(info);
GetVersionEx((LPOSVERSIONINFO)&info); if (! GetVersionEx((LPOSVERSIONINFO)&info)) {
int err = GetLastError();
strlcpy(uname_result, "Bizarre version of Windows where GetVersionEx"
" doesn't work.", sizeof(uname_result));
uname_result_is_set = 1;
return uname_result;
}
if (info.dwMajorVersion == 4 && info.dwMinorVersion == 0) { if (info.dwMajorVersion == 4 && info.dwMinorVersion == 0) {
if (info.dwPlatformId == VER_PLATFORM_WIN32_NT) if (info.dwPlatformId == VER_PLATFORM_WIN32_NT)
plat = "Windows NT 4.0"; plat = "Windows NT 4.0";