Fix memory leak.
This commit is contained in:
parent
cd077dab08
commit
124d218889
@ -158,27 +158,31 @@ ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, const ASN1_ITEM *i
|
|||||||
const char *pass, int passlen,
|
const char *pass, int passlen,
|
||||||
void *obj, int zbuf)
|
void *obj, int zbuf)
|
||||||
{
|
{
|
||||||
ASN1_OCTET_STRING *oct;
|
ASN1_OCTET_STRING *oct = NULL;
|
||||||
unsigned char *in = NULL;
|
unsigned char *in = NULL;
|
||||||
int inlen;
|
int inlen;
|
||||||
if (!(oct = M_ASN1_OCTET_STRING_new ())) {
|
if (!(oct = M_ASN1_OCTET_STRING_new ())) {
|
||||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE);
|
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,ERR_R_MALLOC_FAILURE);
|
||||||
return NULL;
|
goto err;
|
||||||
}
|
}
|
||||||
inlen = ASN1_item_i2d(obj, &in, it);
|
inlen = ASN1_item_i2d(obj, &in, it);
|
||||||
if (!in) {
|
if (!in) {
|
||||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,PKCS12_R_ENCODE_ERROR);
|
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,
|
if (!PKCS12_pbe_crypt(algor, pass, passlen, in, inlen, &oct->data,
|
||||||
&oct->length, 1)) {
|
&oct->length, 1)) {
|
||||||
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,PKCS12_R_ENCRYPT_ERROR);
|
PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,PKCS12_R_ENCRYPT_ERROR);
|
||||||
OPENSSL_free(in);
|
OPENSSL_free(in);
|
||||||
return NULL;
|
goto err;
|
||||||
}
|
}
|
||||||
if (zbuf) OPENSSL_cleanse(in, inlen);
|
if (zbuf) OPENSSL_cleanse(in, inlen);
|
||||||
OPENSSL_free(in);
|
OPENSSL_free(in);
|
||||||
return oct;
|
return oct;
|
||||||
|
err:
|
||||||
|
if (oct)
|
||||||
|
ASN1_OCTET_STRING_free(oct);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_PKCS12_STACK_OF(PKCS7)
|
IMPLEMENT_PKCS12_STACK_OF(PKCS7)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user