From 7a8e861a56ab0ef0a3a621f53b5f5ba999b27576 Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Tue, 21 Jul 2015 17:23:07 -0400 Subject: [PATCH] schannel: Replace deprecated GetVersion with VerifyVersionInfo --- lib/vtls/schannel.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c index fe35a278b8af7c..2e03b78075c8ff 100644 --- a/lib/vtls/schannel.c +++ b/lib/vtls/schannel.c @@ -1120,12 +1120,21 @@ schannel_recv(struct connectdata *conn, int sockindex, */ if(len && !connssl->decdata_offset && connssl->recv_connection_closed && !connssl->recv_sspi_close_notify) { - DWORD winver_full, winver_major, winver_minor; - winver_full = GetVersion(); - winver_major = (DWORD)(LOBYTE(LOWORD(winver_full))); - winver_minor = (DWORD)(HIBYTE(LOWORD(winver_full))); + BOOL isWin2k; + ULONGLONG cm; + OSVERSIONINFOEX osver = { sizeof osver, 5, }; - if(winver_major == 5 && winver_minor == 0 && sspi_status == SEC_E_OK) + cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL); + cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_EQUAL); + cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); + cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL); + + isWin2k = VerifyVersionInfo(&osver, + (VER_MAJORVERSION | VER_MINORVERSION | + VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR), + cm); + + if(isWin2k && sspi_status == SEC_E_OK) connssl->recv_sspi_close_notify = true; else { *err = CURLE_RECV_ERROR;