summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2006-06-24 02:39:52 +0000
committerKen Raeburn <raeburn@mit.edu>2006-06-24 02:39:52 +0000
commitf9b6c2de5c160844e2fb5cb8ea7c6ef4292ee4c4 (patch)
treee8b1cc02464414e5d5fc15807e030b5570f4e115 /src/lib
parent036d40a6c10d88b9d6b8507ae1319790d9d8d61b (diff)
downloadkrb5-f9b6c2de5c160844e2fb5cb8ea7c6ef4292ee4c4.tar.gz
krb5-f9b6c2de5c160844e2fb5cb8ea7c6ef4292ee4c4.tar.xz
krb5-f9b6c2de5c160844e2fb5cb8ea7c6ef4292ee4c4.zip
Fix krb5_get_profile to create a new profile duplicating the list of
files from the one in the provided context, instead of constructing and checking the file list from scratch. Uses a new function in the profile library, not put into the public API yet. * util/profile/prof_init.c (profile_copy): New function. * util/profile/prof_int.h (profile_copy): Declare it. * lib/krb5/os/Makefile.in (LOCALINCLUDES): Look in the profile source dir. * lib/krb5/os/init_os_ctx.c (krb5_get_profile): Replace all the previous code with a call to profile_copy. ticket: 3925 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18209 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/os/Makefile.in1
-rw-r--r--src/lib/krb5/os/init_os_ctx.c26
2 files changed, 3 insertions, 24 deletions
diff --git a/src/lib/krb5/os/Makefile.in b/src/lib/krb5/os/Makefile.in
index db391ab15..403f591e6 100644
--- a/src/lib/krb5/os/Makefile.in
+++ b/src/lib/krb5/os/Makefile.in
@@ -7,6 +7,7 @@ PROG_LIBPATH=-L$(TOPLIBD)
PROG_RPATH=$(KRB5_LIBDIR)
DEFS=
DEFINES=-DLIBDIR=\"$(KRB5_LIBDIR)\"
+LOCALINCLUDES=-I$(SRCTOP)/util/profile
##DOS##BUILDTOP = ..\..\..
##DOS##PREFIXDIR=os
diff --git a/src/lib/krb5/os/init_os_ctx.c b/src/lib/krb5/os/init_os_ctx.c
index d26743ac6..893355ef9 100644
--- a/src/lib/krb5/os/init_os_ctx.c
+++ b/src/lib/krb5/os/init_os_ctx.c
@@ -30,6 +30,7 @@
#include "k5-int.h"
#include "os-proto.h"
+#include "prof_int.h" /* XXX for profile_copy, not public yet */
#ifdef USE_LOGIN_LIBRARY
#include "KerberosLoginPrivate.h"
@@ -414,30 +415,7 @@ krb5_os_init_context(krb5_context ctx, krb5_boolean kdc)
krb5_error_code KRB5_CALLCONV
krb5_get_profile (krb5_context ctx, profile_t *profile)
{
- krb5_error_code retval = 0;
- profile_filespec_t *files = 0;
-
- retval = os_get_default_config_files(&files, ctx->profile_secure);
-
- if (!retval) {
- retval = profile_init((const_profile_filespec_t *) files,
- profile);
- }
-
- if (files)
- free_filespecs(files);
-
- if (retval == ENOENT)
- return KRB5_CONFIG_CANTOPEN;
-
- if ((retval == PROF_SECTION_NOTOP) ||
- (retval == PROF_SECTION_SYNTAX) ||
- (retval == PROF_RELATION_SYNTAX) ||
- (retval == PROF_EXTRA_CBRACE) ||
- (retval == PROF_MISSING_OBRACE))
- return KRB5_CONFIG_BADFORMAT;
-
- return retval;
+ return profile_copy (ctx->profile, profile);
}