diff --git a/CHANGELOG.md b/CHANGELOG.md index ceaed851..09ff0e7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ This project adheres to [Semantic Versioning](http://semver.org/). + + +## [0.9.7b / 5.52.2] - 2021-10-05 + +### Fixed +- fixed issue loading not unicode sandboxie.ini introduced with the previouse build + + + + ## [0.9.7 / 5.52.1] - 2021-10-02 ### Added diff --git a/Sandboxie/common/my_version.h b/Sandboxie/common/my_version.h index 9100df92..31d2be18 100644 --- a/Sandboxie/common/my_version.h +++ b/Sandboxie/common/my_version.h @@ -21,8 +21,8 @@ #ifndef _MY_VERSION_H #define _MY_VERSION_H -#define MY_VERSION_BINARY 5,52,1 -#define MY_VERSION_STRING "5.52.1" +#define MY_VERSION_BINARY 5,52,2 +#define MY_VERSION_STRING "5.52.2" #define MY_VERSION_COMPAT "5.52.0" // this refers to the driver ABI compatibility // These #defines are used by either Resource Compiler, or by NSIC installer diff --git a/Sandboxie/core/dll/rpcrt.c b/Sandboxie/core/dll/rpcrt.c index 7342c2a8..ce39cea9 100644 --- a/Sandboxie/core/dll/rpcrt.c +++ b/Sandboxie/core/dll/rpcrt.c @@ -633,7 +633,7 @@ _FX ULONG RpcRt_RpcBindingFromStringBindingW( wcscat(wstrPortName, dynamicFalse + 9); } } - else if (_wcsicmp(StringBinding, L"0497b57d-2e66-424f-a0c6-157cd5d41700@ncalrpc:") == 0) { + /*else if (_wcsicmp(StringBinding, L"0497b57d-2e66-424f-a0c6-157cd5d41700@ncalrpc:") == 0) { ULONG_PTR pkernel32 = (ULONG_PTR)GetModuleHandle(L"kernel32.dll"); // kernel32.dll!AicpCreateBindingHandle @@ -644,7 +644,7 @@ _FX ULONG RpcRt_RpcBindingFromStringBindingW( if (RpcRt_TestCallingModule(pRetAddr, pkernel32)) { use_RpcMgmtSetComTimeout = TRUE; } - } + }*/ WCHAR* CallingModule = Trace_FindModuleByAddress((void*)pRetAddr); if (CallingModule) @@ -844,7 +844,7 @@ RPC_STATUS RPC_ENTRY RpcRt_RpcStringBindingComposeW(TCHAR *ObjUuid,TCHAR *ProtSe void Sbie_StringFromGUID(const GUID* guid, WCHAR* str); -void RpcRt_NdrClientCallX(const WCHAR* Function, void* ReturnAddress,PMIDL_STUB_DESC pStubDescriptor) +void RpcRt_NdrClientCallX(const WCHAR* Function, void* ReturnAddress,PMIDL_STUB_DESC pStubDescriptor, void* pFormat) { WCHAR text[512] = L"RpcRt_NdrClientCallX"; __try @@ -879,7 +879,7 @@ ULONG_PTR RpcRt_NdrClientCall2_x64( { void* ReturnAddress = (void*)*(__int64*)(vl - (3 * 8)); - RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor); + RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat); return FALSE; // return TRUE to not call the trampoline upon return } @@ -890,7 +890,7 @@ ULONG_PTR RpcRt_NdrClientCall3_x64( void* ReturnAddress = (void*)*(__int64*)(vl - (4 * 8)); __try { - RpcRt_NdrClientCallX(L"NdrClientCall3", ReturnAddress, pProxyInfo->pStubDesc); + RpcRt_NdrClientCallX(L"NdrClientCall3", ReturnAddress, pProxyInfo->pStubDesc, pProxyInfo->ProcFormatString); }__except (EXCEPTION_EXECUTE_HANDLER) {} return FALSE; // return TRUE to not call the trampoline upon return @@ -905,7 +905,7 @@ ULONG_PTR __cdecl RpcRt_NdrClientCall_x86( //va_list vl; //va_start(vl, pFormat); - RpcRt_NdrClientCallX(L"NdrClientCall", ReturnAddress, pStubDescriptor); + RpcRt_NdrClientCallX(L"NdrClientCall", ReturnAddress, pStubDescriptor, pFormat); //va_end(vl); @@ -919,7 +919,7 @@ ULONG_PTR __cdecl RpcRt_NdrClientCall2_x86( //va_list vl; //va_start(vl, pFormat); - RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor); + RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat); //va_end(vl); @@ -933,7 +933,7 @@ ULONG_PTR __cdecl RpcRt_NdrClientCall4_x86( //va_list vl; //va_start(vl, pFormat); - RpcRt_NdrClientCallX(L"NdrClientCall4", ReturnAddress, pStubDescriptor); + RpcRt_NdrClientCallX(L"NdrClientCall4", ReturnAddress, pStubDescriptor, pFormat); //va_end(vl); diff --git a/Sandboxie/core/dll/secure.c b/Sandboxie/core/dll/secure.c index eaa42690..18373324 100644 --- a/Sandboxie/core/dll/secure.c +++ b/Sandboxie/core/dll/secure.c @@ -1783,7 +1783,7 @@ ALIGNED BOOLEAN __cdecl Secure_CheckElevation64( #endif _WIN64 extern BOOLEAN g_rpc_client_hooks; -void RpcRt_NdrClientCallX(const WCHAR* Function, void* ReturnAddress, VOID* pStubDescriptor); +void RpcRt_NdrClientCallX(const WCHAR* Function, void* ReturnAddress, VOID* pStubDescriptor, void* pFormat); ALIGNED BOOLEAN __cdecl Secure_CheckElevation( void *ReturnAddressFromNdrAsyncClientCall, @@ -1791,9 +1791,9 @@ ALIGNED BOOLEAN __cdecl Secure_CheckElevation( { if (g_rpc_client_hooks) { #ifdef _WIN64 - RpcRt_NdrClientCallX(L"Ndr64AsyncClientCall", ReturnAddressFromNdrAsyncClientCall, pStubDescriptor); + RpcRt_NdrClientCallX(L"Ndr64AsyncClientCall", ReturnAddressFromNdrAsyncClientCall, pStubDescriptor, pFormat); #else - RpcRt_NdrClientCallX(L"NdrAsyncClientCall", ReturnAddressFromNdrAsyncClientCall, pStubDescriptor); + RpcRt_NdrClientCallX(L"NdrAsyncClientCall", ReturnAddressFromNdrAsyncClientCall, pStubDescriptor, pFormat); #endif } diff --git a/Sandboxie/core/svc/sbieiniserver.cpp b/Sandboxie/core/svc/sbieiniserver.cpp index b841f6b0..25cfc6ce 100644 --- a/Sandboxie/core/svc/sbieiniserver.cpp +++ b/Sandboxie/core/svc/sbieiniserver.cpp @@ -897,18 +897,21 @@ ULONG SbieIniServer::CacheConfig() HeapFree(GetProcessHeap(), 0, iniData); iniDataPtr = iniData = tmpData; } - else if (encoding == 2) { //Unicode (UTF-16 BE) BOM - // swap all bytes - UCHAR* tmpData = (UCHAR*)iniDataPtr; - for (DWORD i = 0; i < bytesRead-1; i+=2) { - UCHAR tmp = tmpData[i+1]; - tmpData[i+1] = tmpData[i]; - tmpData[i] = tmp; + else { + if (encoding == 2) { //Unicode (UTF-16 BE) BOM + // swap all bytes + UCHAR* tmpData = (UCHAR*)iniDataPtr; + for (DWORD i = 0; i < bytesRead - 1; i += 2) { + UCHAR tmp = tmpData[i + 1]; + tmpData[i + 1] = tmpData[i]; + tmpData[i] = tmp; + } } + //else if (encoding == 0) //Unicode (UTF-16 LE) BOM + bytesRead /= sizeof(wchar_t); } - //else if (encoding == 0) //Unicode (UTF-16 LE) BOM - iniDataPtr[bytesRead / sizeof(wchar_t)] = L'\0'; + iniDataPtr[bytesRead] = L'\0'; m_pConfigIni = new SConfigIni; m_pConfigIni->Encoding = encoding; diff --git a/SandboxiePlus/version.h b/SandboxiePlus/version.h index 88235856..3bee52c8 100644 --- a/SandboxiePlus/version.h +++ b/SandboxiePlus/version.h @@ -3,7 +3,7 @@ #define VERSION_MJR 0 #define VERSION_MIN 9 #define VERSION_REV 7 -#define VERSION_UPD 0 +#define VERSION_UPD 2 #ifndef STR #define STR2(X) #X