Fix memory leak.
This commit is contained in:
parent
cd077dab08
commit
124d218889
1 changed files with 8 additions and 4 deletions
|
@ -158,27 +158,31 @@ ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, const ASN1_ITEM *i
|
|||
const char *pass, int passlen,
|
||||
void *obj, int zbuf)
|
||||
{
|
||||
ASN1_OCTET_STRING *oct;
|
||||
ASN1_OCTET_STRING *oct = NULL;
|
||||
unsigned char *in = NULL;
|
||||
int inlen;
|
||||
if (!(oct = M_ASN1_OCTET_STRING_new ())) {
|
||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE);
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
inlen = ASN1_item_i2d(obj, &in, it);
|
||||
if (!in) {
|
||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,PKCS12_R_ENCODE_ERROR);
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
if (!PKCS12_pbe_crypt(algor, pass, passlen, in, inlen, &oct->data,
|
||||
&oct->length, 1)) {
|
||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,PKCS12_R_ENCRYPT_ERROR);
|
||||
OPENSSL_free(in);
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
if (zbuf) OPENSSL_cleanse(in, inlen);
|
||||
OPENSSL_free(in);
|
||||
return oct;
|
||||
err:
|
||||
if (oct)
|
||||
ASN1_OCTET_STRING_free(oct);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
IMPLEMENT_PKCS12_STACK_OF(PKCS7)
|
||||
|
|
Loading…
Reference in a new issue