From 02ebd552141173775b9462f4414083d3b8d49a80 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 20 Feb 2012 16:15:10 +0100 Subject: [PATCH] COMMON: Filter non-ASCII values in ctype.h-style isFOO functions --- common/util.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/common/util.cpp b/common/util.cpp index e605a267d5bb..3f97308d8ea9 100644 --- a/common/util.cpp +++ b/common/util.cpp @@ -415,32 +415,37 @@ void updateGameGUIOptions(const String &options, const String &langOption) { } } -// -// TODO: Instead of a blind cast, we might want to verify -// if c equals EOS; and/or is in the range -255..+255; -// and return false if it isn't. -// +#define ENSURE_ASCII_CHAR(c) \ + if (c < 0 || c > 127) \ + return false + bool isAlnum(int c) { + ENSURE_ASCII_CHAR(c); return isalnum((byte)c); } bool isAlpha(int c) { + ENSURE_ASCII_CHAR(c); return isalpha((byte)c); } bool isDigit(int c) { + ENSURE_ASCII_CHAR(c); return isdigit((byte)c); } bool isLower(int c) { + ENSURE_ASCII_CHAR(c); return islower((byte)c); } bool isSpace(int c) { + ENSURE_ASCII_CHAR(c); return isspace((byte)c); } bool isUpper(int c) { + ENSURE_ASCII_CHAR(c); return isupper((byte)c); }