summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2011-03-17 22:08:22 +0000
committerGreg Hudson <ghudson@mit.edu>2011-03-17 22:08:22 +0000
commitc2edcfc6afcdc27a007806d48707f6709418eabc (patch)
tree447353a786346619830d914891907660dd02816d /src
parentb5d9f6e92ac9291c6f352a2d86b4b0bf9f74fc1f (diff)
downloadkrb5-c2edcfc6afcdc27a007806d48707f6709418eabc.tar.gz
krb5-c2edcfc6afcdc27a007806d48707f6709418eabc.tar.xz
krb5-c2edcfc6afcdc27a007806d48707f6709418eabc.zip
Don't leak the default realm name when initializing the default realm
in the KDC. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24723 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/kdc/main.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/kdc/main.c b/src/kdc/main.c
index 7979031e5..d58298d80 100644
--- a/src/kdc/main.c
+++ b/src/kdc/main.c
@@ -162,6 +162,8 @@ setup_server_realm(krb5_principal sprinc)
static void
finish_realm(kdc_realm_t *rdp)
{
+ if (rdp->realm_name)
+ free(rdp->realm_name);
if (rdp->realm_mpname)
free(rdp->realm_mpname);
if (rdp->realm_stash)
@@ -290,7 +292,11 @@ init_realm(kdc_realm_t *rdp, char *realm, char *def_mpname,
goto whoops;
}
- rdp->realm_name = realm;
+ rdp->realm_name = strdup(realm);
+ if (rdp->realm_name == NULL) {
+ kret = ENOMEM;
+ goto whoops;
+ }
kret = krb5int_init_context_kdc(&rdp->realm_context);
if (kret) {
kdc_err(NULL, kret, "while getting context for realm %s", realm);
@@ -863,6 +869,7 @@ initialize_realms(krb5_context kcontext, int argc, char **argv)
kdc_realmlist[0] = rdatap;
kdc_numrealms++;
}
+ krb5_free_default_realm(kcontext, lrealm);
}
/* Ensure that this is set for our first request. */