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]

Reply via email to