Fix a big leak when using stack-allocated BIO items.
Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
parent
bbe9769ba6
commit
1a50b8139a
1 changed files with 12 additions and 17 deletions
|
@ -92,23 +92,6 @@ void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u),
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
static int print_fp(const char *str, size_t len, void *fp)
|
||||
{
|
||||
BIO bio;
|
||||
|
||||
BIO_set(&bio, BIO_s_file());
|
||||
BIO_set_fp(&bio, fp, BIO_NOCLOSE);
|
||||
|
||||
return BIO_printf(&bio, "%s", str);
|
||||
}
|
||||
|
||||
void ERR_print_errors_fp(FILE *fp)
|
||||
{
|
||||
ERR_print_errors_cb(print_fp, fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int print_bio(const char *str, size_t len, void *bp)
|
||||
{
|
||||
return BIO_write((BIO *)bp, str, len);
|
||||
|
@ -118,3 +101,15 @@ void ERR_print_errors(BIO *bp)
|
|||
{
|
||||
ERR_print_errors_cb(print_bio, bp);
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
void ERR_print_errors_fp(FILE *fp)
|
||||
{
|
||||
BIO *bio = BIO_new_fp(fp, BIO_NOCLOSE);
|
||||
if (bio == NULL)
|
||||
return;
|
||||
|
||||
ERR_print_errors_cb(print_bio, bio);
|
||||
BIO_free(bio);
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue