diff options
author | Richard Levitte <levitte@openssl.org> | 2002-05-30 16:47:45 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2002-05-30 16:47:45 +0000 |
commit | 9cdf87f19431b32a50b12e468cf2a9557cfc3568 (patch) | |
tree | 5aa5e1f88093d6b8013b9e2f1af0b18201b9bef6 /crypto/asn1/a_int.c | |
parent | a81e9d3dc45f29c1a5fde7fa641a43f796fe92d4 (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.c | 11 |
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) |