From b3f6b43d3c4449e9d35b22d369a0092aa179bf42 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 17 May 2020 20:01:08 +0200 Subject: [PATCH] LibC: Don't let ctype isfoo() helpers access array out of bounds --- Libraries/LibC/ctype.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Libraries/LibC/ctype.h b/Libraries/LibC/ctype.h index 49d1b05019..49e6a26954 100644 --- a/Libraries/LibC/ctype.h +++ b/Libraries/LibC/ctype.h @@ -57,17 +57,17 @@ int isgraph(int); int islower(int); int isupper(int); -#define isalnum(c) (_ctype_[(int)(c)] & (_U | _L | _N)) -#define isalpha(c) (_ctype_[(int)(c)] & (_U | _L)) -#define iscntrl(c) (_ctype_[(int)(c)] & (_C)) -#define isdigit(c) (_ctype_[(int)(c)] & (_N)) -#define isxdigit(c) (_ctype_[(int)(c)] & (_N | _X)) -#define isspace(c) (_ctype_[(int)(c)] & (_S)) -#define ispunct(c) (_ctype_[(int)(c)] & (_P)) -#define isprint(c) (_ctype_[(int)(c)] & (_P | _U | _L | _N | _B)) -#define isgraph(c) (_ctype_[(int)(c)] & (_P | _U | _L | _N)) -#define islower(c) ((_ctype_[(int)(c)] & (_U | _L)) == _L) -#define isupper(c) ((_ctype_[(int)(c)] & (_U | _L)) == _U) +#define isalnum(c) (_ctype_[(unsigned char)(c)] & (_U | _L | _N)) +#define isalpha(c) (_ctype_[(unsigned char)(c)] & (_U | _L)) +#define iscntrl(c) (_ctype_[(unsigned char)(c)] & (_C)) +#define isdigit(c) (_ctype_[(unsigned char)(c)] & (_N)) +#define isxdigit(c) (_ctype_[(unsigned char)(c)] & (_N | _X)) +#define isspace(c) (_ctype_[(unsigned char)(c)] & (_S)) +#define ispunct(c) (_ctype_[(unsigned char)(c)] & (_P)) +#define isprint(c) (_ctype_[(unsigned char)(c)] & (_P | _U | _L | _N | _B)) +#define isgraph(c) (_ctype_[(unsigned char)(c)] & (_P | _U | _L | _N)) +#define islower(c) ((_ctype_[(unsigned char)(c)] & (_U | _L)) == _L) +#define isupper(c) ((_ctype_[(unsigned char)(c)] & (_U | _L)) == _U) #define isascii(c) ((unsigned)c <= 127) #define toascii(c) ((c)&127)