From b4c171c765f1166c728e83be8e4c619d9430a5e2 Mon Sep 17 00:00:00 2001 From: mathieu _alkama_ m Date: Mon, 1 Feb 2016 23:54:32 +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 d9dd285..2f2880e 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -954,9 +954,9 @@ static void setWindowTitle(const text_t* path, bool needsSave) text_t windowTitle[4096]; #if defined(_WIN32) if (needsSave) - swprintf_s(windowTitle, sizeof(windowTitle), L"RocketEditor" EDITOR_VERSION L"- (%s) *", path); + swprintf_s(windowTitle, 4096, L"RocketEditor" EDITOR_VERSION L"- (%s) *", path); else - swprintf_s(windowTitle, sizeof(windowTitle), L"RocketEditor" EDITOR_VERSION L" - (%s)", path); + swprintf_s(windowTitle, 4096, 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 0db09a3..a593d6f 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, sizeof(keyName), L"Down"); break; - case EMGUI_KEY_ARROW_UP: wcscpy_s(keyName, sizeof(keyName), L"Up"); break; - case EMGUI_KEY_ARROW_RIGHT: wcscpy_s(keyName, sizeof(keyName), L"Right"); break; - case EMGUI_KEY_ARROW_LEFT: wcscpy_s(keyName, sizeof(keyName), L"Left"); break; - case EMGUI_KEY_ESC: wcscpy_s(keyName, sizeof(keyName), L"ESC"); break; - case EMGUI_KEY_TAB: wcscpy_s(keyName, sizeof(keyName), L"TAB"); break; - case EMGUI_KEY_BACKSPACE: wcscpy_s(keyName, sizeof(keyName), L"Delete"); break; - case EMGUI_KEY_ENTER: wcscpy_s(keyName, sizeof(keyName), L"Enter"); break; - case EMGUI_KEY_SPACE: wcscpy_s(keyName, sizeof(keyName), L"Space"); break; - case EMGUI_KEY_PAGE_UP: wcscpy_s(keyName, sizeof(keyName), L"Page Up"); break; - case EMGUI_KEY_PAGE_DOWN: wcscpy_s(keyName, sizeof(keyName), L"Page Down"); break; + 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; } }