Fix more error codes.
[openssl.git] / crypto / asn1 / a_utf8.c
index 16aab7f43e935266f2ebbb39df6ad03fa036c103..508e11e527c8c4b2b4bc84e872f453c58c179073 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_UTF8STRING *ASN1_UTF8STRING_new(void)
-{ return M_ASN1_UTF8STRING_new();}
-
-void ASN1_UTF8STRING_free(ASN1_UTF8STRING *x)
-{ return M_ASN1_UTF8STRING_free(x);}
-
-int i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **pp)
-       {
-       return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
-               V_ASN1_UTF8STRING,V_ASN1_UNIVERSAL));
-       }
-
-ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, unsigned char **pp,
-            long length)
-       {
-       ASN1_UTF8STRING *ret=NULL;
-
-       ret=(ASN1_UTF8STRING *)d2i_ASN1_bytes((ASN1_STRING **)a,
-               pp,length,V_ASN1_UTF8STRING,V_ASN1_UNIVERSAL);
-       if (ret == NULL)
-               {
-               ASN1err(ASN1_F_D2I_ASN1_UTF8STRING,ERR_R_NESTED_ASN1_ERROR);
-               return(NULL);
-               }
-       return(ret);
-       }
-
 
 /* UTF8 utilities */
 
@@ -100,9 +73,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 +106,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 +118,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 +132,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;