aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2024-04-09 21:11:02 +0200
committerMark Wielaard <mjw@redhat.com>2024-04-09 21:11:07 +0200
commitfbc4b11da543753b3b803e5546f56e26ec90c2a7 (patch)
tree15dd820facfa1f465f20ee54c2ec9e03660591b8
parent9de658d248f9fd304afa3321dd7a9de1280356ec (diff)
downloadbzip2-upstream-master.tar.gz
Make sure to call isdigit and isspace with unsigned charupstream-master
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
-rw-r--r--bzip2.c4
-rw-r--r--bzlib.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/bzip2.c b/bzip2.c
index 1538faf..9ef7536 100644
--- a/bzip2.c
+++ b/bzip2.c
@@ -1767,8 +1767,8 @@ void addFlagsFromEnvVar ( Cell** argList, Char* varName )
if (p[i] == 0) break;
p += i;
i = 0;
- while (isspace((Int32)(p[0]))) p++;
- while (p[i] != 0 && !isspace((Int32)(p[i]))) i++;
+ while (isspace((UChar)(p[0]))) p++;
+ while (p[i] != 0 && !isspace((UChar)(p[i]))) i++;
if (i > 0) {
k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
for (j = 0; j < k; j++) tmpName[j] = p[j];
diff --git a/bzlib.c b/bzlib.c
index 2178655..100873c 100644
--- a/bzlib.c
+++ b/bzlib.c
@@ -1408,7 +1408,7 @@ BZFILE * bzopen_or_bzdopen
case 's':
smallMode = 1; break;
default:
- if (isdigit((int)(*mode))) {
+ if (isdigit((unsigned char)(*mode))) {
blockSize100k = *mode-BZ_HDR_0;
}
}