Fix the cache flags bitorder issue with a storage flag instead of a

separate function.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13767 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
2004-04-24 21:17:02 +00:00
parent 878240ccc4
commit 9125cb5647
3 changed files with 17 additions and 40 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 - 2003 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997 - 2004 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -405,13 +405,12 @@ fcc_store_cred(krb5_context context,
sp = krb5_storage_from_fd(fd);
krb5_storage_set_eof_code(sp, KRB5_CC_END);
storage_set_flags(context, sp, FCACHE(id)->version);
if (krb5_config_get_bool_default(context, NULL, TRUE,
"libdefaults",
"fcc-mit-ticketflags",
NULL))
ret = _krb5_store_creds_heimdal_0_7(sp, creds);
else
ret = _krb5_store_creds_heimdal_pre_0_7(sp, creds);
if (!krb5_config_get_bool_default(context, NULL, TRUE,
"libdefaults",
"fcc-mit-ticketflags",
NULL))
krb5_storage_set_flags(sp, KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER);
ret = krb5_store_creds(sp, creds);
krb5_storage_free(sp);
}
fcc_unlock(context, fd);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 - 2003 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997 - 2004 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -455,6 +455,7 @@ typedef Authenticator krb5_donot_replay;
#define KRB5_STORAGE_BYTEORDER_BE 0x00 /* default */
#define KRB5_STORAGE_BYTEORDER_LE 0x20
#define KRB5_STORAGE_BYTEORDER_HOST 0x40
#define KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER 0x80
struct krb5_storage_data;
typedef struct krb5_storage_data krb5_storage;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997-2002 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997-2004 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -629,7 +629,7 @@ bitswap32(int32_t b)
*/
krb5_error_code
_krb5_store_creds_internal(krb5_storage *sp, krb5_creds *creds, int v0_6)
krb5_store_creds(krb5_storage *sp, krb5_creds *creds)
{
int ret;
@@ -649,15 +649,14 @@ _krb5_store_creds_internal(krb5_storage *sp, krb5_creds *creds, int v0_6)
enc-tkt-in-skey bit from KDCOptions */
if(ret)
return ret;
if (v0_6) {
if(krb5_storage_is_flags(sp, KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER))
ret = krb5_store_int32(sp, creds->flags.i);
if(ret)
return ret;
} else {
else
ret = krb5_store_int32(sp, bitswap32(TicketFlags2int(creds->flags.b)));
if(ret)
return ret;
}
if(ret)
return ret;
ret = krb5_store_addrs(sp, creds->addresses);
if(ret)
return ret;
@@ -671,28 +670,6 @@ _krb5_store_creds_internal(krb5_storage *sp, krb5_creds *creds, int v0_6)
return ret;
}
/*
* store `creds' on `sp' returning error or zero
*/
krb5_error_code
krb5_store_creds(krb5_storage *sp, krb5_creds *creds)
{
return _krb5_store_creds_internal(sp, creds, 0);
}
krb5_error_code
_krb5_store_creds_heimdal_0_7(krb5_storage *sp, krb5_creds *creds)
{
return _krb5_store_creds_internal(sp, creds, 0);
}
krb5_error_code
_krb5_store_creds_heimdal_pre_0_7(krb5_storage *sp, krb5_creds *creds)
{
return _krb5_store_creds_internal(sp, creds, 1);
}
krb5_error_code
krb5_ret_creds(krb5_storage *sp, krb5_creds *creds)
{