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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -405,13 +405,12 @@ fcc_store_cred(krb5_context context,
sp = krb5_storage_from_fd(fd); sp = krb5_storage_from_fd(fd);
krb5_storage_set_eof_code(sp, KRB5_CC_END); krb5_storage_set_eof_code(sp, KRB5_CC_END);
storage_set_flags(context, sp, FCACHE(id)->version); storage_set_flags(context, sp, FCACHE(id)->version);
if (krb5_config_get_bool_default(context, NULL, TRUE, if (!krb5_config_get_bool_default(context, NULL, TRUE,
"libdefaults", "libdefaults",
"fcc-mit-ticketflags", "fcc-mit-ticketflags",
NULL)) NULL))
ret = _krb5_store_creds_heimdal_0_7(sp, creds); krb5_storage_set_flags(sp, KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER);
else ret = krb5_store_creds(sp, creds);
ret = _krb5_store_creds_heimdal_pre_0_7(sp, creds);
krb5_storage_free(sp); krb5_storage_free(sp);
} }
fcc_unlock(context, fd); 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -455,6 +455,7 @@ typedef Authenticator krb5_donot_replay;
#define KRB5_STORAGE_BYTEORDER_BE 0x00 /* default */ #define KRB5_STORAGE_BYTEORDER_BE 0x00 /* default */
#define KRB5_STORAGE_BYTEORDER_LE 0x20 #define KRB5_STORAGE_BYTEORDER_LE 0x20
#define KRB5_STORAGE_BYTEORDER_HOST 0x40 #define KRB5_STORAGE_BYTEORDER_HOST 0x40
#define KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER 0x80
struct krb5_storage_data; struct krb5_storage_data;
typedef struct krb5_storage_data krb5_storage; 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -629,7 +629,7 @@ bitswap32(int32_t b)
*/ */
krb5_error_code 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; 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 */ enc-tkt-in-skey bit from KDCOptions */
if(ret) if(ret)
return 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); ret = krb5_store_int32(sp, creds->flags.i);
if(ret) else
return ret;
} else {
ret = krb5_store_int32(sp, bitswap32(TicketFlags2int(creds->flags.b))); ret = krb5_store_int32(sp, bitswap32(TicketFlags2int(creds->flags.b)));
if(ret) if(ret)
return ret; return ret;
}
ret = krb5_store_addrs(sp, creds->addresses); ret = krb5_store_addrs(sp, creds->addresses);
if(ret) if(ret)
return ret; return ret;
@@ -671,28 +670,6 @@ _krb5_store_creds_internal(krb5_storage *sp, krb5_creds *creds, int v0_6)
return ret; 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_error_code
krb5_ret_creds(krb5_storage *sp, krb5_creds *creds) krb5_ret_creds(krb5_storage *sp, krb5_creds *creds)
{ {