diff options
| author | Alexandra Ellwood <lxs@mit.edu> | 2007-10-10 21:17:05 +0000 |
|---|---|---|
| committer | Alexandra Ellwood <lxs@mit.edu> | 2007-10-10 21:17:05 +0000 |
| commit | a3fd400857a392bba3cad91e75fbbfbed3372ded (patch) | |
| tree | f32a5b7a672513ba05fe56907f7afc25ac6a8199 /src/ccapi/server | |
| parent | 81f624e3cfaf6ad1c40f8c8931b9e4a1c25993f2 (diff) | |
| download | krb5-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.c | 1 | ||||
| -rw-r--r-- | src/ccapi/server/ccs_credentials.c | 6 | ||||
| -rw-r--r-- | src/ccapi/server/ccs_credentials.h | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/ccapi/server/ccs_ccache.c b/src/ccapi/server/ccs_ccache.c index b3ac5d64e..40b652de7 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 f30479946..04c8e21b5 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 e0a08fb9c..b9219aa40 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); |
