summaryrefslogtreecommitdiffstats
path: root/crypto/asn1/a_int.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-05-30 16:47:45 +0000
committerRichard Levitte <levitte@openssl.org>2002-05-30 16:47:45 +0000
commit9cdf87f19431b32a50b12e468cf2a9557cfc3568 (patch)
tree5aa5e1f88093d6b8013b9e2f1af0b18201b9bef6 /crypto/asn1/a_int.c
parenta81e9d3dc45f29c1a5fde7fa641a43f796fe92d4 (diff)
Check the return values where memory allocation failures may happen.
PR: 49
Diffstat (limited to 'crypto/asn1/a_int.c')
-rw-r--r--crypto/asn1/a_int.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/crypto/asn1/a_int.c b/crypto/asn1/a_int.c
index 496704b9a5..8ae9827f6e 100644
--- a/crypto/asn1/a_int.c
+++ b/crypto/asn1/a_int.c
@@ -397,7 +397,16 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai)
else ret->type=V_ASN1_INTEGER;
j=BN_num_bits(bn);
len=((j == 0)?0:((j/8)+1));
- ret->data=(unsigned char *)OPENSSL_malloc(len+4);
+ if (ret->length < len+4)
+ {
+ char *new_data=(char *)OPENSSL_realloc(ret->data, len+4);
+ if (!new_data)
+ {
+ ASN1err(ASN1_F_BN_TO_ASN1_INTEGER,ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+ ret->data=new_data;
+ }
ret->length=BN_bn2bin(bn,ret->data);
/* Correct zero case */
if(!ret->length)