Don't use WSAAddressToStringA on WP

snprintf fix
This commit is contained in:
Grishka 2017-05-23 16:07:36 +03:00
parent 62849b7466
commit abf17056ce
3 changed files with 20 additions and 5 deletions

View File

@ -78,7 +78,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;NOMINMAX;WEBRTC_APM_DEBUG_DUMP=0;TGVOIP_USE_CUSTOM_CRYPTO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>

View File

@ -16,6 +16,10 @@
void tgvoip_log_file_printf(char level, const char* msg, ...); void tgvoip_log_file_printf(char level, const char* msg, ...);
void tgvoip_log_file_write_header(); void tgvoip_log_file_write_header();
#if !defined(snprintf) && defined(_WIN32)
#define snprintf _snprintf
#endif
#if defined(__ANDROID__) #if defined(__ANDROID__)
#include <android/log.h> #include <android/log.h>
@ -44,10 +48,6 @@ void tgvoip_log_file_write_header();
#include <windows.h> #include <windows.h>
#include <stdio.h> #include <stdio.h>
#ifndef snprintf
#define snprintf _snprintf
#endif
#define _TGVOIP_W32_LOG_PRINT(verb, msg, ...){ char __log_buf[1024]; snprintf(__log_buf, 1024, "%c/tgvoip: " msg "\n", verb, ##__VA_ARGS__); OutputDebugStringA(__log_buf); tgvoip_log_file_printf((char)verb, msg, __VA_ARGS__);} #define _TGVOIP_W32_LOG_PRINT(verb, msg, ...){ char __log_buf[1024]; snprintf(__log_buf, 1024, "%c/tgvoip: " msg "\n", verb, ##__VA_ARGS__); OutputDebugStringA(__log_buf); tgvoip_log_file_printf((char)verb, msg, __VA_ARGS__);}
#define LOGV(msg, ...) _TGVOIP_W32_LOG_PRINT('V', msg, ##__VA_ARGS__) #define LOGV(msg, ...) _TGVOIP_W32_LOG_PRINT('V', msg, ##__VA_ARGS__)
@ -70,6 +70,7 @@ void tgvoip_log_file_write_header();
#endif #endif
#ifdef TGVOIP_LOG_VERBOSITY #ifdef TGVOIP_LOG_VERBOSITY
#if TGVOIP_LOG_VERBOSITY<5 #if TGVOIP_LOG_VERBOSITY<5
#undef LOGV #undef LOGV

View File

@ -381,7 +381,14 @@ std::string NetworkSocketWinsock::V4AddressToString(uint32_t address){
addr.sin_family=AF_INET; addr.sin_family=AF_INET;
addr.sin_addr.s_addr=address; addr.sin_addr.s_addr=address;
DWORD len=sizeof(buf); DWORD len=sizeof(buf);
#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP
wchar_t wbuf[INET6_ADDRSTRLEN];
ZeroMemory(wbuf, sizeof(wbuf));
WSAAddressToStringW((sockaddr*)&addr, sizeof(addr), NULL, wbuf, &len);
WideCharToMultiByte(CP_UTF8, 0, wbuf, -1, buf, sizeof(buf), NULL, NULL);
#else
WSAAddressToStringA((sockaddr*)&addr, sizeof(addr), NULL, buf, &len); WSAAddressToStringA((sockaddr*)&addr, sizeof(addr), NULL, buf, &len);
#endif
return std::string(buf); return std::string(buf);
} }
@ -392,7 +399,14 @@ std::string NetworkSocketWinsock::V6AddressToString(unsigned char *address){
addr.sin6_family=AF_INET6; addr.sin6_family=AF_INET6;
memcpy(addr.sin6_addr.s6_addr, address, 16); memcpy(addr.sin6_addr.s6_addr, address, 16);
DWORD len=sizeof(buf); DWORD len=sizeof(buf);
#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP
wchar_t wbuf[INET6_ADDRSTRLEN];
ZeroMemory(wbuf, sizeof(wbuf));
WSAAddressToStringW((sockaddr*)&addr, sizeof(addr), NULL, wbuf, &len);
WideCharToMultiByte(CP_UTF8, 0, wbuf, -1, buf, sizeof(buf), NULL, NULL);
#else
WSAAddressToStringA((sockaddr*)&addr, sizeof(addr), NULL, buf, &len); WSAAddressToStringA((sockaddr*)&addr, sizeof(addr), NULL, buf, &len);
#endif
return std::string(buf); return std::string(buf);
} }