From b1af3f1abc7d60a7f08c9b0138b0e63c3c353710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 11 Dec 2008 05:05:43 +0000 Subject: [PATCH] leak less memory on malloc failure git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24135 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/asn1_glue.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/krb5/asn1_glue.c b/lib/krb5/asn1_glue.c index cb86c324f..9603dce12 100644 --- a/lib/krb5/asn1_glue.c +++ b/lib/krb5/asn1_glue.c @@ -52,13 +52,23 @@ _krb5_principalname2krb5_principal (krb5_context context, const PrincipalName from, const Realm realm) { - krb5_principal p = malloc(sizeof(*p)); + krb5_error_code ret; + krb5_principal p; + + p = malloc(sizeof(*p)); if (p == NULL) return ENOMEM; - copy_PrincipalName(&from, &p->name); + ret = copy_PrincipalName(&from, &p->name); + if (ret) { + free(p); + return ret; + } p->realm = strdup(realm); - if (p->realm == NULL) + if (p->realm == NULL) { + free_PrincipalName(&p->name); + free(p); return ENOMEM; + } *principal = p; return 0; }