Memory leak and NULL dereference fixes.
[openssl.git] / crypto / asn1 / evp_asn1.c
index b7bb7eb127c76034a3528136810b553310c1397c..1b9445973e49e803f57d2e927bff7a0b9f12704b 100644 (file)
 #include <openssl/asn1.h>
 #include <openssl/asn1_mac.h>
 
-int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, size_t len)
+int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
        {
        ASN1_STRING *os;
 
        if ((os=M_ASN1_OCTET_STRING_new()) == NULL) return(0);
-       if (!M_ASN1_OCTET_STRING_set(os,data,len)) return(0);
+       if (!M_ASN1_OCTET_STRING_set(os,data,len))
+               {
+               M_ASN1_OCTET_STRING_free(os);
+               return 0;
+               }
        ASN1_TYPE_set(a,V_ASN1_OCTET_STRING,os);
        return(1);
        }
 
 /* int max_len:  for returned value    */
 int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data,
-                             size_t max_len)
+            int max_len)
        {
        int ret,num;
        unsigned char *p;
@@ -94,7 +98,7 @@ int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data,
        }
 
 int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
-                                 size_t len)
+            int len)
        {
        int n,size;
        ASN1_OCTET_STRING os,*osp;
@@ -136,7 +140,7 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
  * case, set it to zero */
 /* int max_len:  for returned value    */
 int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, unsigned char *data,
-                                 size_t max_len)
+            int max_len)
        {
        int ret= -1,n;
        ASN1_INTEGER *ai=NULL;