From b36afb79daad6102e5c21cd9ea028e4e45bf1005 Mon Sep 17 00:00:00 2001 From: Allanis <allanis@saracraft.net> Date: Thu, 29 May 2014 01:53:40 +0100 Subject: [PATCH] [Fix] More paranoid checks for possible segfaults. --- src/input.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/input.c b/src/input.c index 05112c9..2272905 100644 --- a/src/input.c +++ b/src/input.c @@ -274,13 +274,25 @@ SDLKey input_keyConv(char* name) { /* Compare for single character. */ if(l == 1) { m = MIN(256, INPUT_NUMKEYS); - for(k = 0; k < m; k++) /* Only valid for char range. */ + for(k = 0; k < m; k++) { /* Only valid for char range. */ + /* Must not be NULL. */ + if(keyconv[k] == NULL) + continue; + + /* Check if it's also a single char. */ if((buf == tolower(keyconv[k][0])) && (keyconv[k][1] == '\0')) return k; + } } else { /* Compare for strings. */ - for(k = 0; k < INPUT_NUMKEYS; k++) + for(k = 0; k < INPUT_NUMKEYS; k++) { + /* Must not be NULL. */ + if(keyconv[k] == NULL) + continue; + + /* Compare strings. */ if(strcmp(name, keyconv[k])==0) return k; + } } WARN("Keyname '%s' doesn't match any key.", name);