[tor-commits] [tor/maint-0.4.0] Merge branch 'bug28096-029-squashed' into bug28096-034-squashed
teor at torproject.org
teor at torproject.org
Wed Mar 13 23:06:42 UTC 2019
commit 66f944f79b9ae0d7383f9bf55c8d8cd4bdacf216
Merge: 155b0f552 2fbc58cf0
Author: teor <teor at torproject.org>
Date: Thu Mar 14 06:53:17 2019 +1000
Merge branch 'bug28096-029-squashed' into bug28096-034-squashed
Merge the new code, and preserve the #else macro comment from 0.3.4.
changes/bug28096 | 13 ++++++++
src/common/compat.c | 95 ++++++++++++++++++++++++++++++++++++-----------------
2 files changed, 77 insertions(+), 31 deletions(-)
diff --cc src/common/compat.c
index 6fdd6ecf0,975875112..f8c4bdb4d
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@@ -2755,13 -2761,26 +2775,26 @@@ get_uname,(void)
"Unrecognized version of Windows [major=%d,minor=%d]",
(int)info.dwMajorVersion,(int)info.dwMinorVersion);
}
- #ifdef VER_NT_SERVER
- if (info.wProductType == VER_NT_SERVER ||
- info.wProductType == VER_NT_DOMAIN_CONTROLLER) {
- strlcat(uname_result, " [server]", sizeof(uname_result));
- }
- #endif /* defined(VER_NT_SERVER) */
+ /* Now append extra information to the name.
+ *
+ * Microsoft's API documentation says that on Windows 8.1 and later,
+ * GetVersionEx returns Windows 8 (6.2) for applications without an
+ * app compatibility manifest (including tor's default build).
+ *
+ * But in our testing, we have seen the actual Windows version on
+ * Windows Server 2012 R2, even without a manifest. */
+ if (info.dwMajorVersion > 6 ||
+ (info.dwMajorVersion == 6 && info.dwMinorVersion >= 2)) {
+ /* When GetVersionEx() returns Windows 8, the actual OS may be any
+ * later version. */
+ strlcat(uname_result, " [or later]", sizeof(uname_result));
+ }
+ /* When we don't know if the OS is a client or server version, we use
+ * the client version, and this qualifier. */
+ if (!is_server && !is_client) {
+ strlcat(uname_result, " [client or server]", sizeof(uname_result));
+ }
-#else
+#else /* !(defined(_WIN32)) */
/* LCOV_EXCL_START -- can't provoke uname failure */
strlcpy(uname_result, "Unknown platform", sizeof(uname_result));
/* LCOV_EXCL_STOP */
More information about the tor-commits
mailing list