~ubuntu-branches/ubuntu/maverick/krb5/maverick

« back to all changes in this revision

Viewing changes to src/lib/krb5/os/ktdefname.c

  • Committer: Bazaar Package Importer
  • Author(s): Sam Hartman
  • Date: 2009-05-07 16:16:34 UTC
  • mfrom: (13.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20090507161634-xqyk0s9na0le4flj
Tags: 1.7dfsg~beta1-4
When  decrypting the TGS response fails with the subkey, try with the
session key to work around Heimdal bug, Closes: #527353 

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
char *krb5_overridekeyname = NULL;
38
38
 
39
39
krb5_error_code KRB5_CALLCONV
40
 
krb5_kt_default_name(krb5_context context, char *name, int namesize)
 
40
krb5_kt_default_name(krb5_context context, char *name, int name_size)
41
41
{
42
42
    char *cp = 0;
43
43
    char *retval;
 
44
    unsigned int namesize = (name_size < 0 ? 0 : name_size);
44
45
 
45
46
    if (krb5_overridekeyname) {
46
 
        if ((size_t) namesize < (strlen(krb5_overridekeyname)+1))
 
47
        if (strlcpy(name, krb5_overridekeyname, namesize) >= namesize)
47
48
            return KRB5_CONFIG_NOTENUFSPACE;
48
 
        strcpy(name, krb5_overridekeyname);
49
49
    } else if ((context->profile_secure == FALSE) &&
50
50
        (cp = getenv("KRB5_KTNAME"))) {
51
 
        if ((size_t) namesize < (strlen(cp)+1))
 
51
        if (strlcpy(name, cp, namesize) >= namesize)
52
52
            return KRB5_CONFIG_NOTENUFSPACE;
53
 
        strcpy(name, cp);
54
53
    } else if ((profile_get_string(context->profile,
55
 
                                   "libdefaults",
56
 
                                   "default_keytab_name", NULL, 
 
54
                                   KRB5_CONF_LIBDEFAULTS,
 
55
                                   KRB5_CONF_DEFAULT_KEYTAB_NAME, NULL, 
57
56
                                   NULL, &retval) == 0) &&
58
57
               retval) {
59
 
        if ((size_t) namesize < (strlen(retval)+1))
 
58
        if (strlcpy(name, retval, namesize) >= namesize)
60
59
            return KRB5_CONFIG_NOTENUFSPACE;
61
 
        strcpy(name, retval);
62
60
        profile_release_string(retval);
63
61
    } else {
64
62
#if defined(_WIN32)
70
68
            defname[len]= '\0';
71
69
            if ( (len + strlen(krb5_defkeyname) + 1) > namesize )
72
70
                return KRB5_CONFIG_NOTENUFSPACE;
73
 
            sprintf(name, krb5_defkeyname, defname);
 
71
            snprintf(name, namesize, krb5_defkeyname, defname);
74
72
        }
75
73
#else
76
 
        if ((size_t) namesize < (strlen(krb5_defkeyname)+1))
 
74
        if (strlcpy(name, krb5_defkeyname, namesize) >= namesize)
77
75
            return KRB5_CONFIG_NOTENUFSPACE;
78
 
        strcpy(name, krb5_defkeyname);
79
76
#endif
80
77
    }
81
78
    return 0;