From: Bodo Möller Date: Mon, 10 May 1999 11:18:26 +0000 (+0000) Subject: The various character predicates (isspace and the like) may not be X-Git-Tag: OpenSSL_0_9_3beta1~113 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84a370a4002740d8311e5c6950071dfff436395b;p=openssl The various character predicates (isspace and the like) may not be used with negative char values, so I've added casts to unsigned char. Maybe what really should be done is change all those arrays and pointers to type unsigned char [] or unsigned char *, respectively; but using plain char with those predicates is just wrong, so something had to be done. Submitted by: Reviewed by: PR: --- diff --git a/crypto/bn/bn_print.c b/crypto/bn/bn_print.c index 1ec49ed3cc..f2d2fce589 100644 --- a/crypto/bn/bn_print.c +++ b/crypto/bn/bn_print.c @@ -165,7 +165,7 @@ int BN_hex2bn(BIGNUM **bn, char *a) if (*a == '-') { neg=1; a++; } - for (i=0; isxdigit(a[i]); i++) + for (i=0; isxdigit((unsigned char) a[i]); i++) ; num=i+neg; @@ -230,7 +230,7 @@ int BN_dec2bn(BIGNUM **bn, char *a) if ((a == NULL) || (*a == '\0')) return(0); if (*a == '-') { neg=1; a++; } - for (i=0; isdigit(a[i]); i++) + for (i=0; isdigit((unsigned char) a[i]); i++) ; num=i+neg; diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index cfc082add3..0b24b14446 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -512,26 +512,26 @@ int OBJ_create_objects(BIO *in) i=BIO_gets(in,buf,512); if (i <= 0) return(num); buf[i-1]='\0'; - if (!isalnum(buf[0])) return(num); + if (!isalnum((unsigned char)buf[0])) return(num); o=s=buf; - while (isdigit(*s) || (*s == '.')) + while (isdigit((unsigned char)*s) || (*s == '.')) s++; if (*s != '\0') { *(s++)='\0'; - while (isspace(*s)) + while (isspace((unsigned char)*s)) s++; if (*s == '\0') s=NULL; else { l=s; - while ((*l != '\0') && !isspace(*l)) + while ((*l != '\0') && !isspace((unsigned char)*l)) l++; if (*l != '\0') { *(l++)='\0'; - while (isspace(*l)) + while (isspace((unsigned char)*l)) l++; if (*l == '\0') l=NULL; } diff --git a/crypto/x509v3/v3_conf.c b/crypto/x509v3/v3_conf.c index 0460fbedfc..91cc7ebfaa 100644 --- a/crypto/x509v3/v3_conf.c +++ b/crypto/x509v3/v3_conf.c @@ -203,7 +203,7 @@ static int v3_check_critical(char **value) char *p = *value; if((strlen(p) < 9) || strncmp(p, "critical,", 9)) return 0; p+=9; - while(isspace(*p)) p++; + while(isspace((unsigned char)*p)) p++; *value = p; return 1; } @@ -214,7 +214,7 @@ static int v3_check_generic(char **value) char *p = *value; if((strlen(p) < 4) || strncmp(p, "RAW:,", 4)) return 0; p+=4; - while(isspace(*p)) p++; + while(isspace((unsigned char)*p)) p++; *value = p; return 1; } diff --git a/crypto/x509v3/v3_utl.c b/crypto/x509v3/v3_utl.c index c1ea05c1e9..7ffab1383c 100644 --- a/crypto/x509v3/v3_utl.c +++ b/crypto/x509v3/v3_utl.c @@ -311,10 +311,10 @@ static char *strip_spaces(char *name) char *p, *q; /* Skip over leading spaces */ p = name; - while(*p && isspace(*p)) p++; + while(*p && isspace((unsigned char)*p)) p++; if(!*p) return NULL; q = p + strlen(p) - 1; - while((q != p) && isspace(*q)) q--; + while((q != p) && isspace((unsigned char)*q)) q--; if(p != q) q[1] = 0; if(!*p) return NULL; return p;