diff options
| author | John Kohl <jtkohl@mit.edu> | 1991-02-18 16:38:54 +0000 |
|---|---|---|
| committer | John Kohl <jtkohl@mit.edu> | 1991-02-18 16:38:54 +0000 |
| commit | 5f9be9ecf927d0e1ba01b4753c6cf449f2308f8f (patch) | |
| tree | 21cc71d967e0b350e6de61b46eac802af8067e5d /src/lib | |
| parent | db0d2f84354b7b189ce07c2c3c1675a42506876d (diff) | |
| download | krb5-5f9be9ecf927d0e1ba01b4753c6cf449f2308f8f.tar.gz krb5-5f9be9ecf927d0e1ba01b4753c6cf449f2308f8f.tar.xz krb5-5f9be9ecf927d0e1ba01b4753c6cf449f2308f8f.zip | |
add KRB5_TC_MATCH_SRV_NAMEONLY
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1719 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/krb5/ccache/file/fcc_retrv.c | 21 | ||||
| -rw-r--r-- | src/lib/krb5/ccache/stdio/scc_retrv.c | 18 |
2 files changed, 37 insertions, 2 deletions
diff --git a/src/lib/krb5/ccache/file/fcc_retrv.c b/src/lib/krb5/ccache/file/fcc_retrv.c index ac3791195..69c36c125 100644 --- a/src/lib/krb5/ccache/file/fcc_retrv.c +++ b/src/lib/krb5/ccache/file/fcc_retrv.c @@ -28,6 +28,10 @@ static krb5_boolean standard_fields_match PROTOTYPE((const krb5_creds *, const krb5_creds *)); +static krb5_boolean srvname_match + PROTOTYPE((const krb5_creds *, + const krb5_creds *)); + static krb5_boolean authdata_match PROTOTYPE ((krb5_authdata * const *, krb5_authdata * const *)); @@ -70,7 +74,9 @@ krb5_fcc_retrieve(id, whichfields, mcreds, creds) return kret; while ((kret = krb5_fcc_next_cred(id, &cursor, &fetchcreds)) == KRB5_OK) { - if (standard_fields_match(mcreds, &fetchcreds) + if (((set(KRB5_TC_MATCH_SRV_NAMEONLY) && + srvname_match(mcreds, &fetchcreds)) || + standard_fields_match(mcreds, &fetchcreds)) && (! set(KRB5_TC_MATCH_IS_SKEY) || mcreds->is_skey == fetchcreds.is_skey) @@ -129,6 +135,19 @@ register const krb5_creds *mcreds, *creds; krb5_principal_compare(mcreds->server,creds->server)); } +/* only match the server name portion, not the server realm portion */ + +static krb5_boolean +srvname_match(mcreds, creds) +register const krb5_creds *mcreds, *creds; +{ + krb5_boolean retval; + retval = krb5_principal_compare(mcreds->client,creds->client); + if (retval != TRUE) + return retval; + return krb5_principal_compare(&(mcreds->server[1]),&(creds->server[1])); +} + static krb5_boolean authdata_match(mdata, data) register krb5_authdata * const *mdata, * const *data; diff --git a/src/lib/krb5/ccache/stdio/scc_retrv.c b/src/lib/krb5/ccache/stdio/scc_retrv.c index 0eac3bbe7..f04ec1f11 100644 --- a/src/lib/krb5/ccache/stdio/scc_retrv.c +++ b/src/lib/krb5/ccache/stdio/scc_retrv.c @@ -56,6 +56,20 @@ register const krb5_creds *mcreds, *creds; krb5_principal_compare(mcreds->server,creds->server)); } +/* only match the server name portion, not the server realm portion */ + +static krb5_boolean +srvname_match(mcreds, creds) +register const krb5_creds *mcreds, *creds; +{ + krb5_boolean retval; + retval = krb5_principal_compare(mcreds->client,creds->client); + if (retval != TRUE) + return retval; + return krb5_principal_compare(&(mcreds->server[1]),&(creds->server[1])); +} + + static krb5_boolean authdata_match(mdata, data) krb5_authdata *const *mdata, *const *data; @@ -123,7 +137,9 @@ krb5_scc_retrieve(id, whichfields, mcreds, creds) return kret; while ((kret = krb5_scc_next_cred(id, &cursor, &fetchcreds)) == KRB5_OK) { - if (standard_fields_match(mcreds, &fetchcreds) + if (((set(KRB5_TC_MATCH_SRV_NAMEONLY) && + srvname_match(mcreds, &fetchcreds)) || + standard_fields_match(mcreds, &fetchcreds)) && (! set(KRB5_TC_MATCH_IS_SKEY) || mcreds->is_skey == fetchcreds.is_skey) |
