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-master.tar.gz
bzip2-master.tar.bz2
bzip2-master.zip
Make sure to call isdigit and isspace with unsigned charHEADmaster
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
Diffstat (limited to '')
-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 )
1767 if (p[i] == 0) break; 1767 if (p[i] == 0) break;
1768 p += i; 1768 p += i;
1769 i = 0; 1769 i = 0;
1770 while (isspace((Int32)(p[0]))) p++; 1770 while (isspace((UChar)(p[0]))) p++;
1771 while (p[i] != 0 && !isspace((Int32)(p[i]))) i++; 1771 while (p[i] != 0 && !isspace((UChar)(p[i]))) i++;
1772 if (i > 0) { 1772 if (i > 0) {
1773 k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10; 1773 k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
1774 for (j = 0; j < k; j++) tmpName[j] = p[j]; 1774 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
1408 case 's': 1408 case 's':
1409 smallMode = 1; break; 1409 smallMode = 1; break;
1410 default: 1410 default:
1411 if (isdigit((int)(*mode))) { 1411 if (isdigit((unsigned char)(*mode))) {
1412 blockSize100k = *mode-BZ_HDR_0; 1412 blockSize100k = *mode-BZ_HDR_0;
1413 } 1413 }
1414 } 1414 }