Bläddra i källkod

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
Nick Mathewson 18 år sedan
förälder
incheckning
6d9632ba23
1 ändrade filer med 8 tillägg och 1 borttagningar
  1. 8 1
      src/common/compat.c

+ 8 - 1
src/common/compat.c

@@ -742,8 +742,15 @@ get_uname(void)
           { VER_SUITE_TERMINAL,           " {terminal services}" },
           { 0, NULL },
         };
+        memset(&info, 0, 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.dwPlatformId == VER_PLATFORM_WIN32_NT)
             plat = "Windows NT 4.0";