提交 84a370a4 编写于 作者: B Bodo Möller

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:
上级 93c5624f
......@@ -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;
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册