I've tested it with gcc on dev.openssl.org (a Solaris 2.6 box)
and we've two problems:
First GCC discovered some type inconsitencies related to the ctype functions
isxxx() which expect an int as the argument per definition/prototype while we
usually pass a character. I had to apply the appended patch to make it quiet,
but I'm sure Ben votes -1 for it. Please decide on your own what to do here,
I'm not sure. At least I've not found a better soltion than casting. BTW, the
warnings were:
| bn_print.c: In function `BN_hex2bn':
| bn_print.c:172: warning: subscript has type `char'
| bn_print.c: In function `BN_dec2bn':
| bn_print.c:239: warning: subscript has type `char'
|
| obj_dat.c: In function `OBJ_create_objects':
| obj_dat.c:550: warning: subscript has type `char'
| obj_dat.c:552: warning: subscript has type `char'
| obj_dat.c:557: warning: subscript has type `char'
| obj_dat.c:564: warning: subscript has type `char'
| obj_dat.c:569: warning: subscript has type `char'
|
| v3_x509.c:192: warning: subscript has type `char'
| v3_x509.c:196: warning: subscript has type `char'
|
| v3_conf.c: In function `v3_check_critical':
| v3_conf.c:182: warning: subscript has type `char'
| v3_conf.c: In function `v3_check_generic':
| v3_conf.c:194: warning: subscript has type `char'
|
| v3_utl.c: In function `strip_spaces':
| v3_utl.c:321: warning: subscript has type `char'
| v3_utl.c:324: warning: subscript has type `char'
Second and more interesting: make test fails on this box with:
| :> make test
| testing...
| ./destest
| Doing cbcm
| Doing ecb
| Doing ede ecb
| Doing cbc
| Doing desx cbc
| Doing ede cbc
| Doing pcbc
| Doing cfb8 cfb16 cfb32 cfb48 cfb64 cfb64() ede_cfb64() done
| Doing ofb
| Doing ofb64
| Doing ede_ofb64
| Doing cbc_cksum
| Doing quad_cksum
| quad_cksum error, out[0] ef7d944c is not 327eba8d
| quad_cksum error, out[1] 8dfff780 is not 201a49cc
| input word alignment test 0 1 2 3
| output word alignment test 0 1 2 3
| fast crypt test
| *** Error code 1
The CPU is a SPARC, the box itself a SPARCstation 5. Feel free to dive into
this problem. Just login to dev.openssl.org and go to /e/openssl/tmp/openssl/.
That's a extracted source tree where I've just done `sh config; make; make
test'.
Ralf S. Engelschall
[EMAIL PROTECTED]
www.engelschall.com
Index: crypto/bn/bn_print.c
===================================================================
RCS file: /e/openssl/cvs/openssl/crypto/bn/bn_print.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 bn_print.c
--- crypto/bn/bn_print.c 1998/12/21 10:54:46 1.1.1.2
+++ crypto/bn/bn_print.c 1999/03/08 12:41:09
@@ -169,7 +169,7 @@
if (*a == '-') { neg=1; a++; }
- for (i=0; isxdigit(a[i]); i++)
+ for (i=0; isxdigit((int)a[i]); i++)
;
num=i+neg;
@@ -236,7 +236,7 @@
if ((a == NULL) || (*a == '\0')) return(0);
if (*a == '-') { neg=1; a++; }
- for (i=0; isdigit(a[i]); i++)
+ for (i=0; isdigit((int)a[i]); i++)
;
num=i+neg;
Index: crypto/objects/obj_dat.c
===================================================================
RCS file: /e/openssl/cvs/openssl/crypto/objects/obj_dat.c,v
retrieving revision 1.3
diff -u -r1.3 obj_dat.c
--- crypto/objects/obj_dat.c 1999/02/14 16:48:21 1.3
+++ crypto/objects/obj_dat.c 1999/03/08 12:42:36
@@ -547,26 +547,26 @@
i=BIO_gets(in,buf,512);
if (i <= 0) return(num);
buf[i-1]='\0';
- if (!isalnum(buf[0])) return(num);
+ if (!isalnum((int)buf[0])) return(num);
o=s=buf;
- while (isdigit(*s) || (*s == '.'))
+ while (isdigit((int)*s) || (*s == '.'))
s++;
if (*s != '\0')
{
*(s++)='\0';
- while (isspace(*s))
+ while (isspace((int)*s))
s++;
if (*s == '\0')
s=NULL;
else
{
l=s;
- while ((*l != '\0') && !isspace(*l))
+ while ((*l != '\0') && !isspace((int)*l))
l++;
if (*l != '\0')
{
*(l++)='\0';
- while (isspace(*l))
+ while (isspace((int)*l))
l++;
if (*l == '\0') l=NULL;
}
Index: crypto/x509/v3_x509.c
===================================================================
RCS file: /e/openssl/cvs/openssl/crypto/x509/v3_x509.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 v3_x509.c
--- crypto/x509/v3_x509.c 1998/12/21 10:59:51 1.1.1.3
+++ crypto/x509/v3_x509.c 1999/03/08 12:43:00
@@ -189,11 +189,11 @@
q=p;
for (;;)
{
- while ((*q != '\0') && isalnum(*q))
+ while ((*q != '\0') && isalnum((int)*q))
q++;
if (*q == '\0') break;
s=q++;
- while (isalnum(*q))
+ while (isalnum((int)*q))
q++;
n=q-s;
i=0;
Index: crypto/x509v3/v3_conf.c
===================================================================
RCS file: /e/openssl/cvs/openssl/crypto/x509v3/v3_conf.c,v
retrieving revision 1.6
diff -u -r1.6 v3_conf.c
--- crypto/x509v3/v3_conf.c 1999/03/06 19:33:28 1.6
+++ crypto/x509v3/v3_conf.c 1999/03/08 12:43:26
@@ -179,7 +179,7 @@
char *p = *value;
if((strlen(p) < 9) || strncmp(p, "critical,", 9)) return 0;
p+=9;
- while(isspace(*p)) p++;
+ while(isspace((int)*p)) p++;
*value = p;
return 1;
}
@@ -191,7 +191,7 @@
char *p = *value;
if((strlen(p) < 4) || strncmp(p, "RAW:,", 4)) return 0;
p+=4;
- while(isspace(*p)) p++;
+ while(isspace((int)*p)) p++;
*value = p;
return 1;
}
Index: crypto/x509v3/v3_utl.c
===================================================================
RCS file: /e/openssl/cvs/openssl/crypto/x509v3/v3_utl.c,v
retrieving revision 1.7
diff -u -r1.7 v3_utl.c
--- crypto/x509v3/v3_utl.c 1999/03/04 23:29:49 1.7
+++ crypto/x509v3/v3_utl.c 1999/03/08 12:43:47
@@ -318,10 +318,10 @@
char *p, *q;
/* Skip over leading spaces */
p = name;
- while(*p && isspace(*p)) p++;
+ while(*p && isspace((int)*p)) p++;
if(!*p) return NULL;
q = p + strlen(p) - 1;
- while((q != p) && isspace(*q)) q--;
+ while((q != p) && isspace((int)*q)) q--;
if(p != q) q[1] = 0;
if(!*p) return NULL;
return p;
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]