From 01720d42b178f039a0d170425d77533879ddaa80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 11 Dec 2008 04:59:28 +0000 Subject: [PATCH] free on error cid#68 git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24099 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/n-fold.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/krb5/n-fold.c b/lib/krb5/n-fold.c index fa45b09f1..39b70a872 100644 --- a/lib/krb5/n-fold.c +++ b/lib/krb5/n-fold.c @@ -109,8 +109,10 @@ _krb5_n_fold(const void *str, size_t len, void *key, size_t size) unsigned char *tmp = malloc(maxlen); unsigned char *buf = malloc(len); - if (tmp == NULL || buf == NULL) - return ENOMEM; + if (tmp == NULL || buf == NULL) { + ret = ENOMEM; + goto out; + } memcpy(buf, str, len); memset(key, 0, size); @@ -129,9 +131,13 @@ _krb5_n_fold(const void *str, size_t len, void *key, size_t size) } } while(l != 0); out: - memset(buf, 0, len); - free(buf); - memset(tmp, 0, maxlen); - free(tmp); + if (buf) { + memset(buf, 0, len); + free(buf); + } + if (tmp) { + memset(tmp, 0, maxlen); + free(tmp); + } return ret; }