summaryrefslogtreecommitdiff
path: root/Cryptlib/OpenSSL/crypto/asn1
diff options
context:
space:
mode:
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/asn1')
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_bitstr.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_bool.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_bytes.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_d2i_fp.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_digest.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_dup.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_enum.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_gentm.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_hdr.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_i2d_fp.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_int.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_mbstr.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_meth.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_object.c30
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_octet.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_print.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_set.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_sign.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_strex.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_strnid.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_time.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_type.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_utctm.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_utf8.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/a_verify.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn1_err.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn1_gen.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn1_lib.c3
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn1_par.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn_mime.c2
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn_moid.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/asn_pack.c12
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/d2i_pr.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/d2i_pu.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/evp_asn1.c6
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/f_enum.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/f_int.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/f_string.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/i2d_pr.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/i2d_pu.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/n_pkey.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/nsseq.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/p5_pbe.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/p5_pbev2.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/p8_pkey.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_bitst.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_crl.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_pkey.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_req.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_spki.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_x509.c2
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/t_x509a.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_dec.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_enc.c7
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_fre.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_new.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_typ.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/tasn_utl.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_algor.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_attrib.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_bignum.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_crl.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_exten.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_info.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_long.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_name.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_pkey.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_req.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_sig.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_spki.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_val.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_x509.c0
-rw-r--r--[-rwxr-xr-x]Cryptlib/OpenSSL/crypto/asn1/x_x509a.c0
74 files changed, 49 insertions, 13 deletions
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_bitstr.c b/Cryptlib/OpenSSL/crypto/asn1/a_bitstr.c
index 0fb9ce0c..0fb9ce0c 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_bitstr.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_bitstr.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_bool.c b/Cryptlib/OpenSSL/crypto/asn1/a_bool.c
index 331acdf0..331acdf0 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_bool.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_bool.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_bytes.c b/Cryptlib/OpenSSL/crypto/asn1/a_bytes.c
index 92d630cd..92d630cd 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_bytes.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_bytes.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_d2i_fp.c b/Cryptlib/OpenSSL/crypto/asn1/a_d2i_fp.c
index 52b2ebdb..52b2ebdb 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_d2i_fp.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_d2i_fp.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_digest.c b/Cryptlib/OpenSSL/crypto/asn1/a_digest.c
index d00d9e22..d00d9e22 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_digest.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_digest.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_dup.c b/Cryptlib/OpenSSL/crypto/asn1/a_dup.c
index 199d50f5..199d50f5 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_dup.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_dup.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_enum.c b/Cryptlib/OpenSSL/crypto/asn1/a_enum.c
index fe9aa13b..fe9aa13b 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_enum.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_enum.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_gentm.c b/Cryptlib/OpenSSL/crypto/asn1/a_gentm.c
index def79062..def79062 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_gentm.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_gentm.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_hdr.c b/Cryptlib/OpenSSL/crypto/asn1/a_hdr.c
index d1c2a7b9..d1c2a7b9 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_hdr.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_hdr.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_i2d_fp.c b/Cryptlib/OpenSSL/crypto/asn1/a_i2d_fp.c
index a3ad76d3..a3ad76d3 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_i2d_fp.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_i2d_fp.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_int.c b/Cryptlib/OpenSSL/crypto/asn1/a_int.c
index ee26c31b..ee26c31b 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_int.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_int.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_mbstr.c b/Cryptlib/OpenSSL/crypto/asn1/a_mbstr.c
index 1538e0a4..1538e0a4 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_mbstr.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_mbstr.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_meth.c b/Cryptlib/OpenSSL/crypto/asn1/a_meth.c
index 50bea917..50bea917 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_meth.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_meth.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_object.c b/Cryptlib/OpenSSL/crypto/asn1/a_object.c
index 3ac2bc2a..e50501ad 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_object.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_object.c
@@ -285,16 +285,28 @@ err:
ASN1_OBJECT_free(ret);
return(NULL);
}
+
ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
long len)
{
ASN1_OBJECT *ret=NULL;
const unsigned char *p;
- int i;
- /* Sanity check OID encoding: can't have leading 0x80 in
- * subidentifiers, see: X.690 8.19.2
+ int i, length;
+
+ /* Sanity check OID encoding.
+ * Need at least one content octet.
+ * MSB must be clear in the last octet.
+ * can't have leading 0x80 in subidentifiers, see: X.690 8.19.2
*/
- for (i = 0, p = *pp; i < len; i++, p++)
+ if (len <= 0 || len > INT_MAX || pp == NULL || (p = *pp) == NULL ||
+ p[len - 1] & 0x80)
+ {
+ ASN1err(ASN1_F_C2I_ASN1_OBJECT,ASN1_R_INVALID_OBJECT_ENCODING);
+ return NULL;
+ }
+ /* Now 0 < len <= INT_MAX, so the cast is safe. */
+ length = (int)len;
+ for (i = 0; i < length; i++, p++)
{
if (*p == 0x80 && (!i || !(p[-1] & 0x80)))
{
@@ -313,20 +325,20 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
else ret=(*a);
p= *pp;
- if ((ret->data == NULL) || (ret->length < len))
+ if ((ret->data == NULL) || (ret->length < length))
{
if (ret->data != NULL) OPENSSL_free(ret->data);
- ret->data=(unsigned char *)OPENSSL_malloc(len ? (int)len : 1);
+ ret->data=(unsigned char *)OPENSSL_malloc(length);
ret->flags|=ASN1_OBJECT_FLAG_DYNAMIC_DATA;
if (ret->data == NULL)
{ i=ERR_R_MALLOC_FAILURE; goto err; }
}
- memcpy(ret->data,p,(int)len);
- ret->length=(int)len;
+ memcpy(ret->data,p,length);
+ ret->length=length;
ret->sn=NULL;
ret->ln=NULL;
/* ret->flags=ASN1_OBJECT_FLAG_DYNAMIC; we know it is dynamic */
- p+=len;
+ p+=length;
if (a != NULL) (*a)=ret;
*pp=p;
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_octet.c b/Cryptlib/OpenSSL/crypto/asn1/a_octet.c
index 24fd0f8e..24fd0f8e 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_octet.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_octet.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_print.c b/Cryptlib/OpenSSL/crypto/asn1/a_print.c
index d18e7723..d18e7723 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_print.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_print.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_set.c b/Cryptlib/OpenSSL/crypto/asn1/a_set.c
index 958558c2..958558c2 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_set.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_set.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_sign.c b/Cryptlib/OpenSSL/crypto/asn1/a_sign.c
index 4dee45fb..4dee45fb 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_sign.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_sign.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_strex.c b/Cryptlib/OpenSSL/crypto/asn1/a_strex.c
index ead37ac3..ead37ac3 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_strex.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_strex.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c b/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c
index 9b7d6881..9b7d6881 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_time.c b/Cryptlib/OpenSSL/crypto/asn1/a_time.c
index 159681fb..159681fb 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_time.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_time.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_type.c b/Cryptlib/OpenSSL/crypto/asn1/a_type.c
index 36beceac..36beceac 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_type.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_type.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_utctm.c b/Cryptlib/OpenSSL/crypto/asn1/a_utctm.c
index d31c0281..d31c0281 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_utctm.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_utctm.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_utf8.c b/Cryptlib/OpenSSL/crypto/asn1/a_utf8.c
index 508e11e5..508e11e5 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_utf8.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_utf8.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_verify.c b/Cryptlib/OpenSSL/crypto/asn1/a_verify.c
index 7ded69b1..7ded69b1 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/a_verify.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/a_verify.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn1_err.c b/Cryptlib/OpenSSL/crypto/asn1/asn1_err.c
index ba88eb31..ba88eb31 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn1_err.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn1_err.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn1_gen.c b/Cryptlib/OpenSSL/crypto/asn1/asn1_gen.c
index 213a8e98..213a8e98 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn1_gen.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn1_gen.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn1_lib.c b/Cryptlib/OpenSSL/crypto/asn1/asn1_lib.c
index 5af559ef..d3451557 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn1_lib.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn1_lib.c
@@ -131,6 +131,9 @@ int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
*pclass=xclass;
if (!asn1_get_length(&p,&inf,plength,(int)max)) goto err;
+ if (inf && !(ret & V_ASN1_CONSTRUCTED))
+ goto err;
+
#if 0
fprintf(stderr,"p=%d + *plength=%ld > omax=%ld + *pp=%d (%d > %d)\n",
(int)p,*plength,omax,(int)*pp,(int)(p+ *plength),
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn1_par.c b/Cryptlib/OpenSSL/crypto/asn1/asn1_par.c
index cb08e154..cb08e154 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn1_par.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn1_par.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c b/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
index ad8fbed9..095887f2 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
@@ -595,6 +595,8 @@ static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio)
int len, state, save_state = 0;
headers = sk_MIME_HEADER_new(mime_hdr_cmp);
+ if (!headers)
+ return NULL;
while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
/* If whitespace at line start then continuation line */
if(mhdr && isspace((unsigned char)linebuf[0])) state = MIME_NAME;
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn_moid.c b/Cryptlib/OpenSSL/crypto/asn1/asn_moid.c
index 1ea6a592..1ea6a592 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn_moid.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn_moid.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn_pack.c b/Cryptlib/OpenSSL/crypto/asn1/asn_pack.c
index f1a5a056..c373714b 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn_pack.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn_pack.c
@@ -134,15 +134,23 @@ ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct)
if (!(octmp->length = i2d(obj, NULL))) {
ASN1err(ASN1_F_ASN1_PACK_STRING,ASN1_R_ENCODE_ERROR);
- return NULL;
+ goto err;
}
if (!(p = OPENSSL_malloc (octmp->length))) {
ASN1err(ASN1_F_ASN1_PACK_STRING,ERR_R_MALLOC_FAILURE);
- return NULL;
+ goto err;
}
octmp->data = p;
i2d (obj, &p);
return octmp;
+ err:
+ if (!oct || !*oct)
+ {
+ ASN1_STRING_free(octmp);
+ if (oct)
+ *oct = NULL;
+ }
+ return NULL;
}
#endif
diff --git a/Cryptlib/OpenSSL/crypto/asn1/d2i_pr.c b/Cryptlib/OpenSSL/crypto/asn1/d2i_pr.c
index 207ccda5..207ccda5 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/d2i_pr.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/d2i_pr.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/d2i_pu.c b/Cryptlib/OpenSSL/crypto/asn1/d2i_pu.c
index 3694f51a..3694f51a 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/d2i_pu.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/d2i_pu.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/evp_asn1.c b/Cryptlib/OpenSSL/crypto/asn1/evp_asn1.c
index f3d98048..1b944597 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/evp_asn1.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/evp_asn1.c
@@ -66,7 +66,11 @@ 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);
}
diff --git a/Cryptlib/OpenSSL/crypto/asn1/f_enum.c b/Cryptlib/OpenSSL/crypto/asn1/f_enum.c
index 56e3cc8d..56e3cc8d 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/f_enum.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/f_enum.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/f_int.c b/Cryptlib/OpenSSL/crypto/asn1/f_int.c
index 9494e597..9494e597 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/f_int.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/f_int.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/f_string.c b/Cryptlib/OpenSSL/crypto/asn1/f_string.c
index 968698a7..968698a7 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/f_string.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/f_string.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/i2d_pr.c b/Cryptlib/OpenSSL/crypto/asn1/i2d_pr.c
index 0be52c5b..0be52c5b 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/i2d_pr.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/i2d_pr.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/i2d_pu.c b/Cryptlib/OpenSSL/crypto/asn1/i2d_pu.c
index 34286dbd..34286dbd 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/i2d_pu.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/i2d_pu.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/n_pkey.c b/Cryptlib/OpenSSL/crypto/asn1/n_pkey.c
index e7d04390..e7d04390 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/n_pkey.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/n_pkey.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/nsseq.c b/Cryptlib/OpenSSL/crypto/asn1/nsseq.c
index e551c57d..e551c57d 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/nsseq.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/nsseq.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/p5_pbe.c b/Cryptlib/OpenSSL/crypto/asn1/p5_pbe.c
index c4582f80..c4582f80 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/p5_pbe.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/p5_pbe.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/p5_pbev2.c b/Cryptlib/OpenSSL/crypto/asn1/p5_pbev2.c
index 2b0516af..2b0516af 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/p5_pbev2.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/p5_pbev2.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/p8_pkey.c b/Cryptlib/OpenSSL/crypto/asn1/p8_pkey.c
index 0a195755..0a195755 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/p8_pkey.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/p8_pkey.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_bitst.c b/Cryptlib/OpenSSL/crypto/asn1/t_bitst.c
index 2e59a25f..2e59a25f 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_bitst.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_bitst.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_crl.c b/Cryptlib/OpenSSL/crypto/asn1/t_crl.c
index ee5a687c..ee5a687c 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_crl.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_crl.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c b/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c
index bc23f567..bc23f567 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_req.c b/Cryptlib/OpenSSL/crypto/asn1/t_req.c
index 5557e065..5557e065 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_req.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_req.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_spki.c b/Cryptlib/OpenSSL/crypto/asn1/t_spki.c
index a73369b9..a73369b9 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_spki.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_spki.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_x509.c b/Cryptlib/OpenSSL/crypto/asn1/t_x509.c
index 6f295b4e..f9dad0e6 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_x509.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_x509.c
@@ -465,6 +465,8 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
l=80-2-obase;
b=X509_NAME_oneline(name,NULL,0);
+ if (!b)
+ return 0;
if (!*b)
{
OPENSSL_free(b);
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_x509a.c b/Cryptlib/OpenSSL/crypto/asn1/t_x509a.c
index 8b18801a..8b18801a 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_x509a.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_x509a.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_dec.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_dec.c
index a228c0d6..a228c0d6 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_dec.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_dec.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_enc.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_enc.c
index 2721f904..b3687f9f 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_enc.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_enc.c
@@ -453,9 +453,14 @@ static int asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out,
{
derlst = OPENSSL_malloc(sk_ASN1_VALUE_num(sk)
* sizeof(*derlst));
+ if (!derlst)
+ return 0;
tmpdat = OPENSSL_malloc(skcontlen);
- if (!derlst || !tmpdat)
+ if (!tmpdat)
+ {
+ OPENSSL_free(derlst);
return 0;
+ }
}
}
/* If not sorting just output each item */
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_fre.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_fre.c
index d7c017fa..d7c017fa 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_fre.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_fre.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_new.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_new.c
index 5c6a2ebd..5c6a2ebd 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_new.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_new.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_typ.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_typ.c
index 6252213d..6252213d 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_typ.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_typ.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/tasn_utl.c b/Cryptlib/OpenSSL/crypto/asn1/tasn_utl.c
index ca9ec7a3..ca9ec7a3 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/tasn_utl.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/tasn_utl.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_algor.c b/Cryptlib/OpenSSL/crypto/asn1/x_algor.c
index 99e53429..99e53429 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_algor.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_algor.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_attrib.c b/Cryptlib/OpenSSL/crypto/asn1/x_attrib.c
index 1e3713f1..1e3713f1 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_attrib.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_attrib.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_bignum.c b/Cryptlib/OpenSSL/crypto/asn1/x_bignum.c
index 9cf3204a..9cf3204a 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_bignum.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_bignum.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_crl.c b/Cryptlib/OpenSSL/crypto/asn1/x_crl.c
index 70d56a67..70d56a67 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_crl.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_crl.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_exten.c b/Cryptlib/OpenSSL/crypto/asn1/x_exten.c
index 3a212399..3a212399 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_exten.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_exten.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_info.c b/Cryptlib/OpenSSL/crypto/asn1/x_info.c
index d44f6cdb..d44f6cdb 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_info.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_info.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_long.c b/Cryptlib/OpenSSL/crypto/asn1/x_long.c
index bf35457c..bf35457c 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_long.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_long.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_name.c b/Cryptlib/OpenSSL/crypto/asn1/x_name.c
index 9a1a9f41..9a1a9f41 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_name.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_name.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_pkey.c b/Cryptlib/OpenSSL/crypto/asn1/x_pkey.c
index 84536184..84536184 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_pkey.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_pkey.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c b/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c
index bc8a7bf3..bc8a7bf3 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_req.c b/Cryptlib/OpenSSL/crypto/asn1/x_req.c
index 59ca8ce3..59ca8ce3 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_req.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_req.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_sig.c b/Cryptlib/OpenSSL/crypto/asn1/x_sig.c
index 42efa86c..42efa86c 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_sig.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_sig.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_spki.c b/Cryptlib/OpenSSL/crypto/asn1/x_spki.c
index 2aece077..2aece077 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_spki.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_spki.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_val.c b/Cryptlib/OpenSSL/crypto/asn1/x_val.c
index dc17c677..dc17c677 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_val.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_val.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_x509.c b/Cryptlib/OpenSSL/crypto/asn1/x_x509.c
index 088d5507..088d5507 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_x509.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_x509.c
diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_x509a.c b/Cryptlib/OpenSSL/crypto/asn1/x_x509a.c
index b603f82d..b603f82d 100755..100644
--- a/Cryptlib/OpenSSL/crypto/asn1/x_x509a.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/x_x509a.c