kuser: plug leak in kinit anonymous PKINIT renew

Do not leak the result of krb5_cc_get_config() when determining anonymous
PKINIT start realm.
This commit is contained in:
Luke Howard
2019-05-22 14:04:22 +10:00
parent b276d139ef
commit 3138c1836c

View File

@@ -289,15 +289,19 @@ get_anon_pkinit_tgs_name(krb5_context context,
char *realm; char *realm;
ret = krb5_cc_get_config(context, ccache, NULL, "anon-pkinit-realm", &data); ret = krb5_cc_get_config(context, ccache, NULL, "anon-pkinit-realm", &data);
if (ret == 0) { if (ret == 0)
realm = malloc(data.length + 1); realm = strndup(data.data, data.length);
memcpy(realm, data.data, data.length); else
realm[data.length] = '\0';
} else
realm = get_default_realm(context); realm = get_default_realm(context);
krb5_data_free(&data);
if (realm == NULL)
return krb5_enomem(context);
ret = krb5_make_principal(context, tgs_name, realm, ret = krb5_make_principal(context, tgs_name, realm,
KRB5_TGS_NAME, realm, NULL); KRB5_TGS_NAME, realm, NULL);
free(realm); free(realm);
return ret; return ret;