ASN1 sanity check.
[openssl.git] / crypto / asn1 / a_mbstr.c
index e8a26af521f23e8895753ed970b250fe7ffd666a..1538e0a4fc250d535c23a8fe9386165916645160 100644 (file)
@@ -1,5 +1,5 @@
 /* a_mbstr.c */
-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 1999.
  */
 /* ====================================================================
@@ -93,7 +93,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
        int str_type;
        int ret;
        char free_out;
-       int outform, outlen;
+       int outform, outlen = 0;
        ASN1_STRING *dest;
        unsigned char *p;
        int nchar;
@@ -107,7 +107,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
 
                case MBSTRING_BMP:
                if(len & 1) {
-                       ASN1err(ASN1_F_ASN1_MBSTRING_COPY,
+                       ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,
                                         ASN1_R_INVALID_BMPSTRING_LENGTH);
                        return -1;
                }
@@ -116,7 +116,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
 
                case MBSTRING_UNIV:
                if(len & 3) {
-                       ASN1err(ASN1_F_ASN1_MBSTRING_COPY,
+                       ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,
                                         ASN1_R_INVALID_UNIVERSALSTRING_LENGTH);
                        return -1;
                }
@@ -128,7 +128,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
                /* This counts the characters and does utf8 syntax checking */
                ret = traverse_string(in, len, MBSTRING_UTF8, in_utf8, &nchar);
                if(ret < 0) {
-                       ASN1err(ASN1_F_ASN1_MBSTRING_COPY,
+                       ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,
                                                 ASN1_R_INVALID_UTF8STRING);
                        return -1;
                }
@@ -139,27 +139,27 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
                break;
 
                default:
-               ASN1err(ASN1_F_ASN1_MBSTRING_COPY, ASN1_R_UNKNOWN_FORMAT);
+               ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_UNKNOWN_FORMAT);
                return -1;
        }
 
        if((minsize > 0) && (nchar < minsize)) {
-               ASN1err(ASN1_F_ASN1_MBSTRING_COPY, ASN1_R_STRING_TOO_SHORT);
-               sprintf(strbuf, "%ld", minsize);
+               ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_SHORT);
+               BIO_snprintf(strbuf, sizeof strbuf, "%ld", minsize);
                ERR_add_error_data(2, "minsize=", strbuf);
                return -1;
        }
 
        if((maxsize > 0) && (nchar > maxsize)) {
-               ASN1err(ASN1_F_ASN1_MBSTRING_COPY, ASN1_R_STRING_TOO_LONG);
-               sprintf(strbuf, "%ld", maxsize);
+               ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_LONG);
+               BIO_snprintf(strbuf, sizeof strbuf, "%ld", maxsize);
                ERR_add_error_data(2, "maxsize=", strbuf);
                return -1;
        }
 
        /* Now work out minimal type (if any) */
        if(traverse_string(in, len, inform, type_str, &mask) < 0) {
-               ASN1err(ASN1_F_ASN1_MBSTRING_COPY, ASN1_R_ILLEGAL_CHARACTERS);
+               ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_ILLEGAL_CHARACTERS);
                return -1;
        }
 
@@ -193,7 +193,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
                free_out = 1;
                dest = ASN1_STRING_type_new(str_type);
                if(!dest) {
-                       ASN1err(ASN1_F_ASN1_MBSTRING_COPY,
+                       ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,
                                                        ERR_R_MALLOC_FAILURE);
                        return -1;
                }
@@ -202,7 +202,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
        /* If both the same type just copy across */
        if(inform == outform) {
                if(!ASN1_STRING_set(dest, in, len)) {
-                       ASN1err(ASN1_F_ASN1_MBSTRING_COPY,ERR_R_MALLOC_FAILURE);
+                       ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,ERR_R_MALLOC_FAILURE);
                        return -1;
                }
                return str_type;
@@ -233,7 +233,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
        }
        if(!(p = OPENSSL_malloc(outlen + 1))) {
                if(free_out) ASN1_STRING_free(dest);
-               ASN1err(ASN1_F_ASN1_MBSTRING_COPY,ERR_R_MALLOC_FAILURE);
+               ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY,ERR_R_MALLOC_FAILURE);
                return -1;
        }
        dest->length = outlen;