Make sure to call isdigit and isspace with unsigned char

Casting to Int32 or int could create negative values. Which isspace
and isdigit don't handle. SEI CERT C Coding Standard STR37-C.

Resolve by casting to UChar or unsigned char instead of Int32 or int.

https://sourceware.org/bugzilla/show_bug.cgi?id=28283
This commit is contained in:
Mark Wielaard 2024-04-09 21:11:02 +02:00
parent 9de658d248
commit fbc4b11da5
2 changed files with 3 additions and 3 deletions

View File

@ -1767,8 +1767,8 @@ void addFlagsFromEnvVar ( Cell** argList, Char* varName )
if (p[i] == 0) break; if (p[i] == 0) break;
p += i; p += i;
i = 0; i = 0;
while (isspace((Int32)(p[0]))) p++; while (isspace((UChar)(p[0]))) p++;
while (p[i] != 0 && !isspace((Int32)(p[i]))) i++; while (p[i] != 0 && !isspace((UChar)(p[i]))) i++;
if (i > 0) { if (i > 0) {
k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10; k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
for (j = 0; j < k; j++) tmpName[j] = p[j]; for (j = 0; j < k; j++) tmpName[j] = p[j];

View File

@ -1408,7 +1408,7 @@ BZFILE * bzopen_or_bzdopen
case 's': case 's':
smallMode = 1; break; smallMode = 1; break;
default: default:
if (isdigit((int)(*mode))) { if (isdigit((unsigned char)(*mode))) {
blockSize100k = *mode-BZ_HDR_0; blockSize100k = *mode-BZ_HDR_0;
} }
} }