2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 05:57:52 +00:00

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
<ctype.h> 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)
This commit is contained in:
Ondřej Surý 2023-09-20 17:23:28 +02:00
parent 7ff22f5961
commit d9b8412f08
No known key found for this signature in database
GPG Key ID: 2820F37E873DEA41

105
cocci/ctype.spatch Normal file
View File

@ -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)