diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2006-12-19 01:31:11 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2006-12-19 01:31:11 +0000 |
| commit | d167f064b4455dc66ca8dfbea4053525dc325502 (patch) | |
| tree | d50868e27c07aa0d1f9dc3847890f178bafa71ab /src | |
| parent | 6adc5cf4c7ed54dfd675b9bfb005ff27e0147891 (diff) | |
| download | krb5-d167f064b4455dc66ca8dfbea4053525dc325502.tar.gz krb5-d167f064b4455dc66ca8dfbea4053525dc325502.tar.xz krb5-d167f064b4455dc66ca8dfbea4053525dc325502.zip | |
ktfns.c (krb5_kt_get_entry): If the supplied server principal has an empty
realm name, replace it with the default realm, in a private copy.
ticket: 5121
tags: pullup
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18975 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/krb5/keytab/ktfns.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/krb5/keytab/ktfns.c b/src/lib/krb5/keytab/ktfns.c index 70da406954..63fa6399b6 100644 --- a/src/lib/krb5/keytab/ktfns.c +++ b/src/lib/krb5/keytab/ktfns.c @@ -54,7 +54,24 @@ krb5_kt_get_entry(krb5_context context, krb5_keytab keytab, krb5_const_principal principal, krb5_kvno vno, krb5_enctype enctype, krb5_keytab_entry *entry) { - return krb5_x((keytab)->ops->get,(context, keytab, principal, vno, enctype, entry)); + krb5_error_code err; + krb5_principal_data princ_data; + + if (krb5_is_referral_realm(&principal->realm)) { + char *realm; + princ_data = *principal; + principal = &princ_data; + err = krb5_get_default_realm(context, &realm); + if (err) + return err; + princ_data.realm.data = realm; + princ_data.realm.length = strlen(realm); + } + err = krb5_x((keytab)->ops->get,(context, keytab, principal, vno, enctype, + entry)); + if (principal == &princ_data) + krb5_free_default_realm(context, princ_data.realm.data); + return err; } krb5_error_code KRB5_CALLCONV |
