From 24dbdf7997e422b5d6039e76fcbe78c88f8afee5 Mon Sep 17 00:00:00 2001 From: logan <> Date: Sat, 28 Jun 2014 18:14:57 +0000 Subject: Fix 9 memory leaks. (Thanks to Brent Cook) With help from tedu@ OK from tedu@ --- src/lib/libcrypto/x509v3/v3_purp.c | 11 ++++++++++- src/lib/libssl/src/crypto/x509v3/v3_purp.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/x509v3/v3_purp.c b/src/lib/libcrypto/x509v3/v3_purp.c index de41a51914..67fb7baa3e 100644 --- a/src/lib/libcrypto/x509v3/v3_purp.c +++ b/src/lib/libcrypto/x509v3/v3_purp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: v3_purp.c,v 1.17 2014/06/12 15:49:31 deraadt Exp $ */ +/* $OpenBSD: v3_purp.c,v 1.18 2014/06/28 18:14:57 logan Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 2001. */ @@ -226,6 +226,9 @@ X509_PURPOSE_add(int id, int trust, int flags, ptmp->name = BUF_strdup(name); ptmp->sname = BUF_strdup(sname); if (!ptmp->name || !ptmp->sname) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; } @@ -242,11 +245,17 @@ X509_PURPOSE_add(int id, int trust, int flags, /* If its a new entry manage the dynamic table */ if (idx == -1) { if (!xptable && !(xptable = sk_X509_PURPOSE_new(xp_cmp))) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; } if (!sk_X509_PURPOSE_push(xptable, ptmp)) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; diff --git a/src/lib/libssl/src/crypto/x509v3/v3_purp.c b/src/lib/libssl/src/crypto/x509v3/v3_purp.c index de41a51914..67fb7baa3e 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_purp.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_purp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: v3_purp.c,v 1.17 2014/06/12 15:49:31 deraadt Exp $ */ +/* $OpenBSD: v3_purp.c,v 1.18 2014/06/28 18:14:57 logan Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 2001. */ @@ -226,6 +226,9 @@ X509_PURPOSE_add(int id, int trust, int flags, ptmp->name = BUF_strdup(name); ptmp->sname = BUF_strdup(sname); if (!ptmp->name || !ptmp->sname) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; } @@ -242,11 +245,17 @@ X509_PURPOSE_add(int id, int trust, int flags, /* If its a new entry manage the dynamic table */ if (idx == -1) { if (!xptable && !(xptable = sk_X509_PURPOSE_new(xp_cmp))) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; } if (!sk_X509_PURPOSE_push(xptable, ptmp)) { + free(ptmp->name); + free(ptmp->sname); + free(ptmp); X509V3err(X509V3_F_X509_PURPOSE_ADD, ERR_R_MALLOC_FAILURE); return 0; -- cgit v1.2.3-55-g6feb