From 64246e68515f9c73315a06f4f62738e45655f983 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 11 Oct 2013 15:48:26 +0000 Subject: dynamic memory allocation on buffer overrun. 99.95% of strings are still printed without any need of memory allocation git-svn-id: http://svn.miranda-ng.org/main/trunk@6440 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/mir_core/protos.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/mir_core/protos.cpp') diff --git a/src/mir_core/protos.cpp b/src/mir_core/protos.cpp index 95648a4333..d4a02757bb 100644 --- a/src/mir_core/protos.cpp +++ b/src/mir_core/protos.cpp @@ -48,17 +48,15 @@ void UninitProtocols() MIR_CORE_DLL(void) ProtoLogA(struct PROTO_INTERFACE *pThis, LPCSTR szFormat, va_list args) { char buf[4096]; - _vsnprintf(buf, sizeof(buf), szFormat, args); - buf[sizeof(buf)-1] = 0; - CallService(MS_NETLIB_LOG, (WPARAM)pThis->m_hNetlibUser, (LPARAM)buf); + int res = _vsnprintf_s(buf, sizeof(buf), szFormat, args); + CallService(MS_NETLIB_LOG, (WPARAM)pThis->m_hNetlibUser, (LPARAM)((res != -1) ? buf : CMStringA().FormatV(szFormat, args))); } MIR_CORE_DLL(void) ProtoLogW(struct PROTO_INTERFACE *pThis, LPCWSTR wszFormat, va_list args) { WCHAR buf[4096]; - _vsnwprintf(buf, SIZEOF(buf), wszFormat, args); - buf[SIZEOF(buf)-1] = 0; - CallService(MS_NETLIB_LOGW, (WPARAM)pThis->m_hNetlibUser, (LPARAM)buf); + int res = _vsnwprintf_s(buf, SIZEOF(buf), wszFormat, args); + CallService(MS_NETLIB_LOGW, (WPARAM)pThis->m_hNetlibUser, (LPARAM)((res != -1) ? buf : CMStringW().FormatV(wszFormat, args))); } ///////////////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3