Use isdigit instead of checking character range

When looking for key files, we could use isdigit rather than checking
if the character is within the range [0-9].

Use (unsigned char) cast to ensure the value is representable in the
unsigned char type (as suggested by the isdigit manpage).

Change " & 0xff" occurrences to the recommended (unsigned char) type
cast.
This commit is contained in:
Matthijs Mekking 2021-04-14 09:19:20 +02:00
parent 0c09867e96
commit 66f2cd228d
12 changed files with 20 additions and 24 deletions

View file

@ -379,7 +379,7 @@ all_digits(const char *s) {
return (false);
}
while (*s != '\0') {
if (!isdigit((*s) & 0xff)) {
if (!isdigit((unsigned char)(*s))) {
return (false);
}
s++;

View file

@ -11,6 +11,7 @@
/*! \file */
#include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h>

View file

@ -11,6 +11,7 @@
/*! \file */
#include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h>
@ -1433,8 +1434,7 @@ dns_dnssec_findmatchingkeys(const dns_name_t *origin, const char *directory,
alg = 0;
for (i = len + 1 + 1; i < dir.entry.length; i++) {
if (dir.entry.name[i] < '0' || dir.entry.name[i] > '9')
{
if (!isdigit((unsigned char)dir.entry.name[i])) {
break;
}
alg *= 10;
@ -1452,15 +1452,8 @@ dns_dnssec_findmatchingkeys(const dns_name_t *origin, const char *directory,
}
for (i++; i < dir.entry.length; i++) {
if (dir.entry.name[i] < '0' || dir.entry.name[i] > '9')
{
if (!isdigit((unsigned char)dir.entry.name[i])) {
break;
/*
* Did we not read exactly 5 more digits?
* Did we overflow?
* Did we correctly terminate?
*/
}
}

View file

@ -1204,7 +1204,7 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source,
POST(state);
/* FALLTHROUGH */
case ft_escape:
if (!isdigit(c & 0xff)) {
if (!isdigit((unsigned char)c)) {
if (count >= 63) {
return (DNS_R_LABELTOOLONG);
}
@ -1224,7 +1224,7 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source,
state = ft_escdecimal;
/* FALLTHROUGH */
case ft_escdecimal:
if (!isdigit(c & 0xff)) {
if (!isdigit((unsigned char)c)) {
return (DNS_R_BADESCAPE);
}
value *= 10;

View file

@ -219,8 +219,8 @@ maybe_numeric(unsigned int *valuep, isc_textregion_t *source, unsigned int max,
char buffer[NUMBERSIZE];
int v;
if (!isdigit(source->base[0] & 0xff) || source->length > NUMBERSIZE - 1)
{
if (!isdigit((unsigned char)source->base[0]) ||
source->length > NUMBERSIZE - 1) {
return (ISC_R_BADNUMBER);
}

View file

@ -35,7 +35,8 @@ fromtext_x25(ARGS_FROMTEXT) {
RETTOK(DNS_R_SYNTAX);
}
for (i = 0; i < token.value.as_textregion.length; i++) {
if (!isdigit(token.value.as_textregion.base[i] & 0xff)) {
if (!isdigit((unsigned char)token.value.as_textregion.base[i]))
{
RETTOK(ISC_R_RANGE);
}
}
@ -125,7 +126,7 @@ fromstruct_x25(ARGS_FROMSTRUCT) {
}
for (i = 0; i < x25->x25_len; i++) {
if (!isdigit(x25->x25[i] & 0xff)) {
if (!isdigit((unsigned char)x25->x25[i])) {
return (ISC_R_RANGE);
}
}

View file

@ -91,7 +91,7 @@ fromtext_in_atma(ARGS_FROMTEXT) {
lastwasperiod = true;
continue;
}
if ((sr->base[0] < '0') || (sr->base[0] > '9')) {
if (!isdigit((unsigned char)sr->base[0])) {
RETTOK(DNS_R_SYNTAX);
}
RETERR(mem_tobuffer(target, sr->base, 1));
@ -157,7 +157,7 @@ fromwire_in_atma(ARGS_FROMWIRE) {
if (region.base[0] == 1) {
unsigned int i;
for (i = 1; i < region.length; i++) {
if (region.base[i] < '0' || region.base[i] > '9') {
if (!isdigit((unsigned char)region.base[i])) {
return (DNS_R_FORMERR);
}
}

View file

@ -89,7 +89,7 @@ conv_num(const char **buf, int *dest, int llim, int ulim) {
/* The limit also determines the number of valid digits. */
int rulim = ulim;
if (**buf < '0' || **buf > '9') {
if (!isdigit((unsigned char)**buf)) {
return (0);
}

View file

@ -230,7 +230,7 @@ isc_dir_createunique(char *templet) {
*/
p = x;
while (*p != '\0') {
if (isdigit(*p & 0xff)) {
if (isdigit((unsigned char)*p)) {
*p = 'a';
} else if (*p != 'z') {
++*p;

View file

@ -273,7 +273,7 @@ isc_dir_createunique(char *templet) {
*/
p = x;
while (*p != '\0') {
if (isdigit(*p & 0xff)) {
if (isdigit((unsigned char)*p)) {
*p = 'a';
} else if (*p != 'z') {
++*p;

View file

@ -102,7 +102,7 @@ gettemp(char *path, bool binary, int *doopen) {
if (*trv == 'z') {
*trv++ = 'a';
} else {
if (isdigit(*trv)) {
if (isdigit((unsigned char)*trv)) {
*trv = 'a';
} else {
++*trv;

View file

@ -11,6 +11,7 @@
/*! \file */
#include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <string.h>
@ -5352,7 +5353,7 @@ get_root_key_sentinel_id(query_ctx_t *qctx, const char *ndata) {
int i;
for (i = 0; i < 5; i++) {
if (ndata[i] < '0' || ndata[i] > '9') {
if (!isdigit((unsigned char)ndata[i])) {
return (false);
}
v *= 10;