From d9b8412f0843d7cfc71ec6877381a49c19c30a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 20 Sep 2023 17:23:28 +0200 Subject: [PATCH] Add semantic patch to explicitly cast chars to unsigned for ctype.h Add a semantic patch to catch all the places where we pass 'char' to the family of functions (isalpha() and friends, toupper(), tolower()). While it generally works because the way how these functions are constructed in the libc, it's safer to do the explicit cast. (cherry picked from commit 5ec65ab5d082616716c94ebff94636daf1f789ac) --- cocci/ctype.spatch | 105 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 cocci/ctype.spatch diff --git a/cocci/ctype.spatch b/cocci/ctype.spatch new file mode 100644 index 0000000000..2b392cb310 --- /dev/null +++ b/cocci/ctype.spatch @@ -0,0 +1,105 @@ +@@ +char T; +@@ + +- isalnum(T) ++ isalnum((unsigned char)T) + +@@ +char T; +@@ + +- isalpha(T) ++ isalpha((unsigned char)T) + +@@ +char T; +@@ + +- iscntrl(T) ++ iscntrl((unsigned char)T) + +@@ +char T; +@@ + +- isdigit(T) ++ isdigit((unsigned char)T) + +@@ +char T; +@@ + +- isgraph(T) ++ isgraph((unsigned char)T) + +@@ +char T; +@@ + +- islower(T) ++ islower((unsigned char)T) + +@@ +char T; +@@ + +- isprint(T) ++ isprint((unsigned char)T) + +@@ +char T; +@@ + +- ispunct(T) ++ ispunct((unsigned char)T) + +@@ +char T; +@@ + +- isspace(T) ++ isspace((unsigned char)T) + +@@ +char T; +@@ + +- isupper(T) ++ isupper((unsigned char)T) + +@@ +char T; +@@ + +- isxdigit(T) ++ isxdigit((unsigned char)T) + +@@ +char T; +@@ + +- isascii(T) ++ isascii((unsigned char)T) + +@@ +char T; +@@ + +- isblank(T) ++ isblank((unsigned char)T) + +@@ +char T; +@@ + +- tolower(T) ++ tolower((unsigned char)T) + +@@ +char T; +@@ + +- toupper(T) ++ toupper((unsigned char)T) +