From 9125cb5647180838d1cd304afacae1ed97bc6527 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Sat, 24 Apr 2004 21:17:02 +0000 Subject: [PATCH] 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 --- lib/krb5/fcache.c | 15 +++++++-------- lib/krb5/krb5.h | 3 ++- lib/krb5/store.c | 39 ++++++++------------------------------- 3 files changed, 17 insertions(+), 40 deletions(-) diff --git a/lib/krb5/fcache.c b/lib/krb5/fcache.c index 5ea93b6ba..79a5744a2 100644 --- a/lib/krb5/fcache.c +++ b/lib/krb5/fcache.c @@ -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); diff --git a/lib/krb5/krb5.h b/lib/krb5/krb5.h index 1dc169839..8d0d2537a 100644 --- a/lib/krb5/krb5.h +++ b/lib/krb5/krb5.h @@ -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; diff --git a/lib/krb5/store.c b/lib/krb5/store.c index 09c6cb154..abdd8e2e3 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -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) {