mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	Fix more Windows build errors
I did test this beforehand, but not on MinGW, and the error that showed up on the msvc builder didn't happen for me...
This commit is contained in:
		
							parent
							
								
									42015de49b
								
							
						
					
					
						commit
						ac939f08a4
					
				| @ -872,7 +872,7 @@ if(ENABLE_OPENSSL) | ||||
| elseif (WIN32) | ||||
|     target_sources(core PRIVATE | ||||
|         hle/service/ssl/ssl_backend_schannel.cpp) | ||||
|     target_link_libraries(core PRIVATE Secur32) | ||||
|     target_link_libraries(core PRIVATE secur32) | ||||
| else() | ||||
|     target_sources(core PRIVATE | ||||
|         hle/service/ssl/ssl_backend_none.cpp) | ||||
|  | ||||
| @ -149,7 +149,7 @@ static std::pair<u32, GetAddrInfoError> GetHostByNameRequestImpl(HLERequestConte | ||||
|     const std::string host = Common::StringFromBuffer(host_buffer); | ||||
|     // For now, ignore options, which are in input buffer 1 for GetHostByNameRequestWithOptions.
 | ||||
| 
 | ||||
|     auto res = Network::GetAddrInfo(host, /*service*/ std::nullopt); | ||||
|     auto res = Network::GetAddressInfo(host, /*service*/ std::nullopt); | ||||
|     if (!res.has_value()) { | ||||
|         return {0, Translate(res.error())}; | ||||
|     } | ||||
| @ -249,7 +249,7 @@ static std::pair<u32, GetAddrInfoError> GetAddrInfoRequestImpl(HLERequestContext | ||||
| 
 | ||||
|     // Serialized hints are also passed in a buffer, but are ignored for now.
 | ||||
| 
 | ||||
|     auto res = Network::GetAddrInfo(host, service); | ||||
|     auto res = Network::GetAddressInfo(host, service); | ||||
|     if (!res.has_value()) { | ||||
|         return {0, Translate(res.error())}; | ||||
|     } | ||||
|  | ||||
| @ -12,29 +12,31 @@ | ||||
| 
 | ||||
| #include <mutex> | ||||
| 
 | ||||
| #define SECURITY_WIN32 | ||||
| #include <Security.h> | ||||
| #include <schnlsp.h> | ||||
| 
 | ||||
| namespace { | ||||
| 
 | ||||
| // These includes are inside the namespace to avoid a conflict on MinGW where
 | ||||
| // the headers define an enum containing Network and Service as enumerators
 | ||||
| // (which clash with the correspondingly named namespaces).
 | ||||
| #define SECURITY_WIN32 | ||||
| #include <security.h> | ||||
| #include <schnlsp.h> | ||||
| 
 | ||||
| std::once_flag one_time_init_flag; | ||||
| bool one_time_init_success = false; | ||||
| 
 | ||||
| SCHANNEL_CRED schannel_cred{ | ||||
|     .dwVersion = SCHANNEL_CRED_VERSION, | ||||
|     .dwFlags = SCH_USE_STRONG_CRYPTO |         // don't allow insecure protocols
 | ||||
|                SCH_CRED_AUTO_CRED_VALIDATION | // validate certs
 | ||||
|                SCH_CRED_NO_DEFAULT_CREDS,      // don't automatically present a client certificate
 | ||||
| SCHANNEL_CRED schannel_cred{}; | ||||
| CredHandle cred_handle; | ||||
| 
 | ||||
| static void OneTimeInit() { | ||||
|     schannel_cred.dwVersion = SCHANNEL_CRED_VERSION; | ||||
|     schannel_cred.dwFlags = SCH_USE_STRONG_CRYPTO |         // don't allow insecure protocols
 | ||||
|                             SCH_CRED_AUTO_CRED_VALIDATION | // validate certs
 | ||||
|                             SCH_CRED_NO_DEFAULT_CREDS;      // don't automatically present a client certificate
 | ||||
|     // ^ I'm assuming that nobody would want to connect Yuzu to a
 | ||||
|     // service that requires some OS-provided corporate client
 | ||||
|     // certificate, and presenting one to some arbitrary server
 | ||||
|     // might be a privacy concern?  Who knows, though.
 | ||||
| }; | ||||
| 
 | ||||
| CredHandle cred_handle; | ||||
| 
 | ||||
| static void OneTimeInit() { | ||||
|     SECURITY_STATUS ret = | ||||
|         AcquireCredentialsHandle(nullptr, const_cast<LPTSTR>(UNISP_NAME), SECPKG_CRED_OUTBOUND, | ||||
|                                  nullptr, &schannel_cred, nullptr, nullptr, &cred_handle, nullptr); | ||||
| @ -179,15 +181,21 @@ public: | ||||
|                 // [1] (will be replaced by SECBUFFER_MISSING when SEC_E_INCOMPLETE_MESSAGE is
 | ||||
|                 //     returned, or SECBUFFER_EXTRA when SEC_E_CONTINUE_NEEDED is returned if the
 | ||||
|                 //     whole buffer wasn't used)
 | ||||
|                 .cbBuffer = 0, | ||||
|                 .BufferType = SECBUFFER_EMPTY, | ||||
|                 .pvBuffer = nullptr, | ||||
|             }, | ||||
|         }}; | ||||
|         std::array<SecBuffer, 2> output_buffers{{ | ||||
|             { | ||||
|                 .cbBuffer = 0, | ||||
|                 .BufferType = SECBUFFER_TOKEN, | ||||
|                 .pvBuffer = nullptr, | ||||
|             }, // [0]
 | ||||
|             { | ||||
|                 .cbBuffer = 0, | ||||
|                 .BufferType = SECBUFFER_ALERT, | ||||
|                 .pvBuffer = nullptr, | ||||
|             }, // [1]
 | ||||
|         }}; | ||||
|         SecBufferDesc input_desc{ | ||||
| @ -299,21 +307,20 @@ public: | ||||
|                 return read_size; | ||||
|             } | ||||
|             if (!ciphertext_read_buf_.empty()) { | ||||
|                 SecBuffer empty{ | ||||
|                     .cbBuffer = 0, | ||||
|                     .BufferType = SECBUFFER_EMPTY, | ||||
|                     .pvBuffer = nullptr, | ||||
|                 }; | ||||
|                 std::array<SecBuffer, 5> buffers{{ | ||||
|                     { | ||||
|                         .cbBuffer = static_cast<unsigned long>(ciphertext_read_buf_.size()), | ||||
|                         .BufferType = SECBUFFER_DATA, | ||||
|                         .pvBuffer = ciphertext_read_buf_.data(), | ||||
|                     }, | ||||
|                     { | ||||
|                         .BufferType = SECBUFFER_EMPTY, | ||||
|                     }, | ||||
|                     { | ||||
|                         .BufferType = SECBUFFER_EMPTY, | ||||
|                     }, | ||||
|                     { | ||||
|                         .BufferType = SECBUFFER_EMPTY, | ||||
|                     }, | ||||
|                     empty, | ||||
|                     empty, | ||||
|                     empty, | ||||
|                 }}; | ||||
|                 ASSERT_OR_EXECUTE_MSG( | ||||
|                     buffers[0].cbBuffer == ciphertext_read_buf_.size(), | ||||
|  | ||||
| @ -493,9 +493,7 @@ u32 IPv4AddressToInteger(IPv4Address ip_addr) { | ||||
|            static_cast<u32>(ip_addr[2]) << 8 | static_cast<u32>(ip_addr[3]); | ||||
| } | ||||
| 
 | ||||
| #undef GetAddrInfo // Windows defines it as a macro
 | ||||
| 
 | ||||
| Common::Expected<std::vector<AddrInfo>, GetAddrInfoError> GetAddrInfo( | ||||
| Common::Expected<std::vector<AddrInfo>, GetAddrInfoError> GetAddressInfo( | ||||
|     const std::string& host, const std::optional<std::string>& service) { | ||||
|     addrinfo hints{}; | ||||
|     hints.ai_family = AF_INET; // Switch only supports IPv4.
 | ||||
|  | ||||
| @ -5,6 +5,7 @@ | ||||
| 
 | ||||
| #include <array> | ||||
| #include <optional> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "common/common_funcs.h" | ||||
| #include "common/common_types.h" | ||||
| @ -113,7 +114,8 @@ std::optional<IPv4Address> GetHostIPv4Address(); | ||||
| std::string IPv4AddressToString(IPv4Address ip_addr); | ||||
| u32 IPv4AddressToInteger(IPv4Address ip_addr); | ||||
| 
 | ||||
| Common::Expected<std::vector<AddrInfo>, GetAddrInfoError> GetAddrInfo( | ||||
| // named to avoid name collision with Windows macro
 | ||||
| Common::Expected<std::vector<AddrInfo>, GetAddrInfoError> GetAddressInfo( | ||||
|     const std::string& host, const std::optional<std::string>& service); | ||||
| 
 | ||||
| } // namespace Network
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user