Merge pull request #6407 from QuarkTheAwesome/master
[WiiU] Fix OOB read/write in keyboard driver
This commit is contained in:
commit
9721c7c4be
|
@ -35,10 +35,8 @@
|
||||||
|
|
||||||
#define MAX_PADS 5
|
#define MAX_PADS 5
|
||||||
|
|
||||||
static unsigned char keyboardChannel = 0x00;
|
static uint8_t keyboardChannel = 0x00;
|
||||||
static KBDModifier keyboardModifier = 0x00;
|
static bool keyboardState[RETROK_LAST] = { 0 };
|
||||||
static unsigned char keyboardCode = 0x00;
|
|
||||||
static KEYState keyboardState[256] = { KBD_WIIU_NULL };
|
|
||||||
|
|
||||||
typedef struct wiiu_input
|
typedef struct wiiu_input
|
||||||
{
|
{
|
||||||
|
@ -62,14 +60,13 @@ void kb_key_callback(KBDKeyEvent *key)
|
||||||
unsigned code = 0;
|
unsigned code = 0;
|
||||||
bool pressed = false;
|
bool pressed = false;
|
||||||
|
|
||||||
keyboardModifier = key->modifier;
|
|
||||||
keyboardCode = key->scancode;
|
|
||||||
|
|
||||||
if (key->state > 0)
|
if (key->state > 0)
|
||||||
pressed = true;
|
pressed = true;
|
||||||
|
|
||||||
code = input_keymaps_translate_keysym_to_rk(key->scancode);
|
code = input_keymaps_translate_keysym_to_rk(key->scancode);
|
||||||
keyboardState[code] = key->state;
|
if (code < RETROK_LAST)
|
||||||
|
keyboardState[code] = pressed;
|
||||||
|
|
||||||
|
|
||||||
if (key->modifier & KBD_WIIU_SHIFT)
|
if (key->modifier & KBD_WIIU_SHIFT)
|
||||||
mod |= RETROKMOD_SHIFT;
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
@ -134,7 +131,7 @@ static bool wiiu_key_pressed(int key)
|
||||||
if (key >= RETROK_LAST)
|
if (key >= RETROK_LAST)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ((keyboardState[key] > 0) && (keyboardChannel > 0))
|
if (keyboardState[key] && (keyboardChannel > 0))
|
||||||
ret = true;
|
ret = true;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue