Various fixes...
[oweals/openssl.git] / crypto / asn1 / a_utf8.c
index 16aab7f43e935266f2ebbb39df6ad03fa036c103..854278f136e75977ac888d7e392224ca9415ca6a 100644 (file)
@@ -64,7 +64,7 @@ ASN1_UTF8STRING *ASN1_UTF8STRING_new(void)
 { return M_ASN1_UTF8STRING_new();}
 
 void ASN1_UTF8STRING_free(ASN1_UTF8STRING *x)
-{ return M_ASN1_UTF8STRING_free(x);}
+{ M_ASN1_UTF8STRING_free(x);}
 
 int i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **pp)
        {
@@ -100,9 +100,9 @@ ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, unsigned char **pp,
  * -4 = character encoded incorrectly (not minimal length).
  */
 
-int UTF8_getc(unsigned char *str, int len, unsigned long *val)
+int UTF8_getc(const unsigned char *str, int len, unsigned long *val)
 {
-       unsigned char *p;
+       const unsigned char *p;
        unsigned long value;
        int ret;
        if(len <= 0) return 0;
@@ -133,7 +133,7 @@ int UTF8_getc(unsigned char *str, int len, unsigned long *val)
                if( ((p[1] & 0xc0) != 0x80)
                   || ((p[2] & 0xc0) != 0x80) 
                   || ((p[3] & 0xc0) != 0x80) ) return -3;
-               value = (*p++ & 0x7) << 18;
+               value = ((unsigned long)(*p++ & 0x7)) << 18;
                value |= (*p++ & 0x3f) << 12;
                value |= (*p++ & 0x3f) << 6;
                value |= *p++ & 0x3f;
@@ -145,9 +145,9 @@ int UTF8_getc(unsigned char *str, int len, unsigned long *val)
                   || ((p[2] & 0xc0) != 0x80) 
                   || ((p[3] & 0xc0) != 0x80) 
                   || ((p[4] & 0xc0) != 0x80) ) return -3;
-               value = (*p++ & 0x3) << 24;
-               value |= (*p++ & 0x3f) << 18;
-               value |= (*p++ & 0x3f) << 12;
+               value = ((unsigned long)(*p++ & 0x3)) << 24;
+               value |= ((unsigned long)(*p++ & 0x3f)) << 18;
+               value |= ((unsigned long)(*p++ & 0x3f)) << 12;
                value |= (*p++ & 0x3f) << 6;
                value |= *p++ & 0x3f;
                if(value < 0x200000) return -4;
@@ -159,10 +159,10 @@ int UTF8_getc(unsigned char *str, int len, unsigned long *val)
                   || ((p[3] & 0xc0) != 0x80) 
                   || ((p[4] & 0xc0) != 0x80) 
                   || ((p[5] & 0xc0) != 0x80) ) return -3;
-               value = (*p++ & 0x1) << 30;
-               value |= (*p++ & 0x3f) << 24;
-               value |= (*p++ & 0x3f) << 18;
-               value |= (*p++ & 0x3f) << 12;
+               value = ((unsigned long)(*p++ & 0x1)) << 30;
+               value |= ((unsigned long)(*p++ & 0x3f)) << 24;
+               value |= ((unsigned long)(*p++ & 0x3f)) << 18;
+               value |= ((unsigned long)(*p++ & 0x3f)) << 12;
                value |= (*p++ & 0x3f) << 6;
                value |= *p++ & 0x3f;
                if(value < 0x4000000) return -4;