summaryrefslogtreecommitdiffstats
path: root/src/ccapi/server
diff options
context:
space:
mode:
authorAlexandra Ellwood <lxs@mit.edu>2007-10-10 21:17:05 +0000
committerAlexandra Ellwood <lxs@mit.edu>2007-10-10 21:17:05 +0000
commita3fd400857a392bba3cad91e75fbbfbed3372ded (patch)
treef32a5b7a672513ba05fe56907f7afc25ac6a8199 /src/ccapi/server
parent81f624e3cfaf6ad1c40f8c8931b9e4a1c25993f2 (diff)
downloadkrb5-a3fd400857a392bba3cad91e75fbbfbed3372ded.tar.gz
krb5-a3fd400857a392bba3cad91e75fbbfbed3372ded.tar.xz
krb5-a3fd400857a392bba3cad91e75fbbfbed3372ded.zip
cc_ccache_store_credentials should return ccErrBadCredentialsVersion
cc_ccache_store_credentials should return ccErrBadCredentialsVersion when the principal for that version is not set on the ccache. ticket: new git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20114 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/ccapi/server')
-rw-r--r--src/ccapi/server/ccs_ccache.c1
-rw-r--r--src/ccapi/server/ccs_credentials.c6
-rw-r--r--src/ccapi/server/ccs_credentials.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/src/ccapi/server/ccs_ccache.c b/src/ccapi/server/ccs_ccache.c
index b3ac5d64e5..40b652de7b 100644
--- a/src/ccapi/server/ccs_ccache.c
+++ b/src/ccapi/server/ccs_ccache.c
@@ -687,6 +687,7 @@ static cc_int32 ccs_ccache_store_credentials (ccs_ccache_t io_ccache,
if (!err) {
err = ccs_credentials_new (&credentials, in_request_data,
+ io_ccache->creds_version,
io_ccache->credentials);
}
diff --git a/src/ccapi/server/ccs_credentials.c b/src/ccapi/server/ccs_credentials.c
index f30479946f..04c8e21b57 100644
--- a/src/ccapi/server/ccs_credentials.c
+++ b/src/ccapi/server/ccs_credentials.c
@@ -37,6 +37,7 @@ struct ccs_credentials_d ccs_credentials_initializer = { NULL, NULL };
cc_int32 ccs_credentials_new (ccs_credentials_t *out_credentials,
cci_stream_t in_stream,
+ cc_uint32 in_ccache_version,
ccs_credentials_list_t io_credentials_list)
{
cc_int32 err = ccNoError;
@@ -58,6 +59,11 @@ cc_int32 ccs_credentials_new (ccs_credentials_t *out_credentials,
err = cci_cred_union_read (&credentials->cred_union, in_stream);
}
+ if (!err && !(credentials->cred_union->version & in_ccache_version)) {
+ /* ccache does not have a principal set for this credentials version */
+ err = cci_check_error (ccErrBadCredentialsVersion);
+ }
+
if (!err) {
err = ccs_server_new_identifier (&credentials->identifier);
}
diff --git a/src/ccapi/server/ccs_credentials.h b/src/ccapi/server/ccs_credentials.h
index e0a08fb9c8..b9219aa408 100644
--- a/src/ccapi/server/ccs_credentials.h
+++ b/src/ccapi/server/ccs_credentials.h
@@ -32,6 +32,7 @@
cc_int32 ccs_credentials_new (ccs_credentials_t *out_credentials,
cci_stream_t in_stream,
+ cc_uint32 in_ccache_version,
ccs_credentials_list_t io_credentials_list);
cc_int32 ccs_credentials_release (ccs_credentials_t io_credentials);