From c8956523a1718cb71ee27c48f762a733ac7601da Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 16 Jan 2022 17:36:17 -0500 Subject: [PATCH] lib/krb5: scc_alloc do not leak 'freeme' Introduce a common 'out' label to avoid leaking 'freeme'. Change-Id: I8d58efc75125ee553b462372ad160394013f9a3a --- lib/krb5/scache.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/krb5/scache.c b/lib/krb5/scache.c index 6aae8884a..c3ecd5810 100644 --- a/lib/krb5/scache.c +++ b/lib/krb5/scache.c @@ -446,10 +446,8 @@ scc_alloc(krb5_context context, name += sizeof("SCC:") - 1; if ((s->file = strdup(name)) == NULL) { - (void) krb5_enomem(context); - scc_free(s); - free(freeme); - return NULL; + ret = krb5_enomem(context); + goto out; } if ((subsidiary = strrchr(s->file, ':'))) { @@ -480,11 +478,14 @@ scc_alloc(krb5_context context, if (ret == 0 && s->file && s->sub && (asprintf(&s->name, "%s:%s", s->file, s->sub) < 0 || s->name == NULL)) ret = krb5_enomem(context); + + out: if (ret || s->file == NULL || s->sub == NULL || s->name == NULL) { scc_free(s); - free(freeme); - return NULL; + s = NULL; } + + free(freeme); return s; } -- 2.11.4.GIT