Skip to content

Commit 8cc0ec9

Browse files
botovqicing
authored andcommitted
free BIGNUMs correctly
OpenSSL BIGNUMs should be freed with BN_free() since they (usually) have an allocated bn->d array of BN_ULONG, which the call to OPENSSL_free() leaks.
1 parent 3df1829 commit 8cc0ec9

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

ChangeLog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Fix a small memory leak when using OpenSSL's BIGNUMs. [Theo Buehler]
2+
13
v2.6.5
24
----------------------------------------------------------------------------------------------------
35
* Hardening: when build with OpenSSL older than 1.0.2 or old libressl versions,

src/md_crypt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,7 +1244,7 @@ const char *md_cert_get_serial_number(const md_cert_t *cert, apr_pool_t *p)
12441244
serial = BN_bn2hex(bn);
12451245
s = apr_pstrdup(p, serial);
12461246
OPENSSL_free((void*)serial);
1247-
OPENSSL_free((void*)bn);
1247+
BN_free(bn);
12481248
}
12491249
return s;
12501250
}
@@ -2254,7 +2254,7 @@ apr_status_t md_cert_get_ari_cert_id(const char **pari_cert_id,
22542254
memset(&ser_buf, 0, sizeof(ser_buf));
22552255
bn = ASN1_INTEGER_to_BN(serial, NULL);
22562256
sder_len = BN_bn2bin(bn, sbuf);
2257-
OPENSSL_free((void*)bn);
2257+
BN_free(bn);
22582258
if (sder_len < 1)
22592259
return APR_EINVAL;
22602260
ser_buf.len = (apr_size_t)sder_len;

src/md_ocsp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ static const char *certid_summary(const OCSP_CERTID *certid, apr_pool_t *p)
532532
bn = ASN1_INTEGER_to_BN(aserial, NULL);
533533
s = BN_bn2hex(bn);
534534
serial = apr_pstrdup(p, s);
535-
OPENSSL_free((void*)bn);
535+
BN_free(bn);
536536
OPENSSL_free((void*)s);
537537
}
538538
return apr_psprintf(p, "certid[der=%s, issuer=%s, key=%s, serial=%s]",

0 commit comments

Comments
 (0)