summaryrefslogtreecommitdiffstats
path: root/src/lib/krb4/g_cnffile.c
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2003-03-03 07:49:34 +0000
committerTom Yu <tlyu@mit.edu>2003-03-03 07:49:34 +0000
commit99e30b57804a04e1d7f47e14e7392745aa997527 (patch)
treed0e8621df07ca81dc52d6cfaf05ef70eeaead7c8 /src/lib/krb4/g_cnffile.c
parentd7945a6727cfa39039434d4da63a7080a91cabcd (diff)
downloadkrb5-99e30b57804a04e1d7f47e14e7392745aa997527.tar.gz
krb5-99e30b57804a04e1d7f47e14e7392745aa997527.tar.xz
krb5-99e30b57804a04e1d7f47e14e7392745aa997527.zip
* g_cnffile.c (krb__get_srvtabname): Keep strdup()ed string in a
static variable and free it called again; this prevents a memory leak. ticket: 1357 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15215 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb4/g_cnffile.c')
-rw-r--r--src/lib/krb4/g_cnffile.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/krb4/g_cnffile.c b/src/lib/krb4/g_cnffile.c
index c31a9d2190..8d61f50565 100644
--- a/src/lib/krb4/g_cnffile.c
+++ b/src/lib/krb4/g_cnffile.c
@@ -56,7 +56,7 @@ krb__get_srvtabname(default_srvtabname)
const char* names[3];
char **full_name = 0, **cpp;
krb5_error_code retval;
- char *retname;
+ static char *retname;
if (!krb5__krb4_context)
krb5_init_context(&krb5__krb4_context);
@@ -67,6 +67,8 @@ krb__get_srvtabname(default_srvtabname)
retval = profile_get_values(krb5__krb4_context->profile, names,
&full_name);
if (retval == 0 && full_name && full_name[0]) {
+ if (retname != NULL)
+ free(retname);
retname = strdup(full_name[0]);
for (cpp = full_name; *cpp; cpp++)
krb5_xfree(*cpp);
@@ -74,6 +76,8 @@ krb__get_srvtabname(default_srvtabname)
return retname;
}
}
+ if (retname != NULL)
+ free(retname);
retname = strdup(default_srvtabname);
return retname;
}