From e212e99794aaf50512abd3040d89cbe287ed38de Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Wed, 11 Jan 2023 13:57:09 -0500 Subject: [PATCH] Fix buffer overrun if apply/removeShift is called with an unknown character --- src/dialogxml/keycodes.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dialogxml/keycodes.cpp b/src/dialogxml/keycodes.cpp index df3578de..895e3ff7 100644 --- a/src/dialogxml/keycodes.cpp +++ b/src/dialogxml/keycodes.cpp @@ -92,6 +92,7 @@ bool mod_contains(eKeyMod mods, eKeyMod mod) { } unsigned char applyShift(unsigned char c){ + if(c < ' ' || c >= 0x7f) return c; static const char afterShift[] = { ' ', '!', '"', '#', '$', '%', '&', '"', '(', ')', '*', '+', '<', '_', '>', '?', ')', '!', '@', '#', '$', '%', '^', '&', '*', '(', ':', ':', '<', '+', '>', '?', @@ -104,6 +105,7 @@ unsigned char applyShift(unsigned char c){ } unsigned char removeShift(unsigned char c){ + if(c < ' ' || c >= 0x7f) return c; static const char afterUnShift[] = { ' ', '1', '\'','3', '4', '5', '7', '\'','9', '0', '8', '=', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ';', ';', ',', '=', '.', '/',