diff options
Diffstat (limited to 'src/lib/krb5')
-rw-r--r-- | src/lib/krb5/keytab/file/ChangeLog | 5 | ||||
-rw-r--r-- | src/lib/krb5/keytab/file/ktf_g_name.c | 18 | ||||
-rw-r--r-- | src/lib/krb5/os/ChangeLog | 5 | ||||
-rw-r--r-- | src/lib/krb5/os/ktdefname.c | 14 |
4 files changed, 38 insertions, 4 deletions
diff --git a/src/lib/krb5/keytab/file/ChangeLog b/src/lib/krb5/keytab/file/ChangeLog index 58112dccc..39c397434 100644 --- a/src/lib/krb5/keytab/file/ChangeLog +++ b/src/lib/krb5/keytab/file/ChangeLog @@ -1,3 +1,8 @@ +Fri Jul 12 21:16:50 1996 Marc Horowitz <marc@mit.edu> + + * ktf_g_name.c (krb5_ktfile_get_name): include the prefix in the + returned name. + Wed Jun 12 01:09:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> * ser_ktf.c: Add #ifdef _WIN32 in places where we had #ifdef _MSDOS diff --git a/src/lib/krb5/keytab/file/ktf_g_name.c b/src/lib/krb5/keytab/file/ktf_g_name.c index a8f27c474..dd8aadc74 100644 --- a/src/lib/krb5/keytab/file/ktf_g_name.c +++ b/src/lib/krb5/keytab/file/ktf_g_name.c @@ -36,10 +36,24 @@ krb5_ktfile_get_name(context, id, name, len) /* * This routine returns the name of the name of the file associated with * this file-based keytab. name is zeroed and the filename is truncated - * to fit in name if necessary. + * to fit in name if necessary. The name is prefixed with PREFIX:, so that + * trt will happen if the name is passed back to resolve. */ { memset(name, 0, len); - strncpy(name, KTFILENAME(id), len); + + if (len < strlen(id->ops->prefix)+2) + return(ENAMETOOLONG); + strcpy(name, id->ops->prefix); + name += strlen(id->ops->prefix); + name[0] = ':'; + name++; + len -= strlen(id->ops->prefix)+1; + + if (len < strlen(KTFILENAME(id)+1)) + return(ENAMETOOLONG); + strcpy(name, KTFILENAME(id)); + /* strcpy will NUL-terminate the destination */ + return(0); } diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 75d2f0d3e..721ce1e5e 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,8 @@ +Fri Jul 12 21:38:15 1996 Marc Horowitz <marc@mit.edu> + + * ktdefname.c (krb5_kt_default_name): allow the default keytab name + to be specified in the config file. + Wed Jun 12 01:12:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> * net_read.c (krb5_net_read): diff --git a/src/lib/krb5/os/ktdefname.c b/src/lib/krb5/os/ktdefname.c index 433c1c9da..29eb54fe2 100644 --- a/src/lib/krb5/os/ktdefname.c +++ b/src/lib/krb5/os/ktdefname.c @@ -37,12 +37,22 @@ krb5_kt_default_name(context, name, namesize) int namesize; { char *cp = 0; + krb5_error_code code; + char *retval; - if (context->profile_secure == FALSE) cp = getenv("KRB5_KTNAME"); - if (cp) { + if ((context->profile_secure == FALSE) && + (cp = getenv("KRB5_KTNAME"))) { strncpy(name, cp, namesize); if (strlen(cp) >= (size_t) namesize) return KRB5_CONFIG_NOTENUFSPACE; + } else if (((code = profile_get_string(context->profile, + "libdefaults", + "default_keytab_name", NULL, + NULL, &retval)) == 0) && + retval) { + strncpy(name, retval, namesize); + if ((size_t) namesize < strlen(retval)) + return KRB5_CONFIG_NOTENUFSPACE; } else { #if defined (_MSDOS) || defined(_WIN32) { |