mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-03 22:08:25 -04:00
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:
parent
0c09867e96
commit
66f2cd228d
12 changed files with 20 additions and 24 deletions
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
/*! \file */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue