From e87c756d3e3a295143fcc172da4e00f3abe03871 Mon Sep 17 00:00:00 2001 From: mathieu _alkama_ m Date: Tue, 2 Feb 2016 09:02:15 +0100 Subject: [PATCH] Fix: (for Win builds) incorrect use of "wcscpy_s" and "swprintf_s". The expected size is in number of characters, not bytes. Caused stack corruption. --- ogl_editor/src/Editor.c | 4 ++-- ogl_editor/src/windows/RocketWindow.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ogl_editor/src/Editor.c b/ogl_editor/src/Editor.c index d1d808f..9bfe48e 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -957,9 +957,9 @@ static void setWindowTitle(const text_t* path, bool needsSave) text_t windowTitle[4096]; #if defined(_WIN32) if (needsSave) - swprintf_s(windowTitle, 4096, L"RocketEditor" EDITOR_VERSION L"- (%s) *", path); + swprintf_s(windowTitle, sizeof_array(windowTitle), L"RocketEditor" EDITOR_VERSION L"- (%s) *", path); else - swprintf_s(windowTitle, 4096, L"RocketEditor" EDITOR_VERSION L" - (%s)", path); + swprintf_s(windowTitle, sizeof_array(windowTitle), L"RocketEditor" EDITOR_VERSION L" - (%s)", path); #else if (needsSave) sprintf(windowTitle, "RocketEditor" EDITOR_VERSION "- (%s) *", path); diff --git a/ogl_editor/src/windows/RocketWindow.c b/ogl_editor/src/windows/RocketWindow.c index a593d6f..db53cfd 100644 --- a/ogl_editor/src/windows/RocketWindow.c +++ b/ogl_editor/src/windows/RocketWindow.c @@ -210,17 +210,17 @@ static void formatName(wchar_t* outName, int keyMod, int key, const wchar_t* nam { switch (key) { - case EMGUI_KEY_ARROW_DOWN : wcscpy_s(keyName, 64, L"Down"); break; - case EMGUI_KEY_ARROW_UP: wcscpy_s(keyName, 64, L"Up"); break; - case EMGUI_KEY_ARROW_RIGHT: wcscpy_s(keyName, 64, L"Right"); break; - case EMGUI_KEY_ARROW_LEFT: wcscpy_s(keyName, 64, L"Left"); break; - case EMGUI_KEY_ESC: wcscpy_s(keyName, 64, L"ESC"); break; - case EMGUI_KEY_TAB: wcscpy_s(keyName, 64, L"TAB"); break; - case EMGUI_KEY_BACKSPACE: wcscpy_s(keyName, 64, L"Delete"); break; - case EMGUI_KEY_ENTER: wcscpy_s(keyName, 64, L"Enter"); break; - case EMGUI_KEY_SPACE: wcscpy_s(keyName, 64, L"Space"); break; - case EMGUI_KEY_PAGE_UP: wcscpy_s(keyName, 64, L"Page Up"); break; - case EMGUI_KEY_PAGE_DOWN: wcscpy_s(keyName, 64, L"Page Down"); break; + case EMGUI_KEY_ARROW_DOWN : wcscpy_s(keyName, sizeof_array(keyName), L"Down"); break; + case EMGUI_KEY_ARROW_UP: wcscpy_s(keyName, sizeof_array(keyName), L"Up"); break; + case EMGUI_KEY_ARROW_RIGHT: wcscpy_s(keyName, sizeof_array(keyName), L"Right"); break; + case EMGUI_KEY_ARROW_LEFT: wcscpy_s(keyName, sizeof_array(keyName), L"Left"); break; + case EMGUI_KEY_ESC: wcscpy_s(keyName, sizeof_array(keyName), L"ESC"); break; + case EMGUI_KEY_TAB: wcscpy_s(keyName, sizeof_array(keyName), L"TAB"); break; + case EMGUI_KEY_BACKSPACE: wcscpy_s(keyName, sizeof_array(keyName), L"Delete"); break; + case EMGUI_KEY_ENTER: wcscpy_s(keyName, sizeof_array(keyName), L"Enter"); break; + case EMGUI_KEY_SPACE: wcscpy_s(keyName, sizeof_array(keyName), L"Space"); break; + case EMGUI_KEY_PAGE_UP: wcscpy_s(keyName, sizeof_array(keyName), L"Page Up"); break; + case EMGUI_KEY_PAGE_DOWN: wcscpy_s(keyName, sizeof_array(keyName), L"Page Down"); break; } }