From 4ccc9ed53b0ad3ab2b4755dadd43bf5c70537ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 8 Mar 2004 19:27:42 +0000 Subject: [PATCH] (krb5_store_creds): add disabled code that store the ticket flags in reverse order (bitswap32): new function git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13481 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/store.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/krb5/store.c b/lib/krb5/store.c index 004cf5cfd..570b5d5a1 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -611,6 +611,19 @@ krb5_ret_authdata(krb5_storage *sp, krb5_authdata *auth) return ret; } +static int32_t +bitswap32(int32_t b) +{ + int32_t r = 0; + int i; + for (i = 0; i < 32; i++) { + r = r << 1 | (b & 1); + b = b >> 1; + } + return r; +} + + /* * store `creds' on `sp' returning error or zero */ @@ -618,6 +631,7 @@ krb5_ret_authdata(krb5_storage *sp, krb5_authdata *auth) krb5_error_code krb5_store_creds(krb5_storage *sp, krb5_creds *creds) { + int32_t dummy32; int ret; ret = krb5_store_principal(sp, creds->client); @@ -636,7 +650,10 @@ krb5_store_creds(krb5_storage *sp, krb5_creds *creds) enc-tkt-in-skey bit from KDCOptions */ if(ret) return ret; - ret = krb5_store_int32(sp, creds->flags.i); + dummy32 = creds->flags.i; + if (0) /* change heimdal major version 0.7 or 0.8 ? */ + dummy32 = bitswap32(dummy32); + ret = krb5_store_int32(sp, dummy32); if(ret) return ret; ret = krb5_store_addrs(sp, creds->addresses); @@ -677,15 +694,8 @@ krb5_ret_creds(krb5_storage *sp, krb5_creds *creds) * this code need to be removed), or its a MIT cache (or new * Heimdal cache), lets change it to our current format. */ - if (dummy32 & 0xffff0000) { - int32_t rdummy32 = 0; - int i; - for (i = 0; i < 32; i++) { - rdummy32 = rdummy32 << 1 | (dummy32 & 1); - dummy32 = dummy32 >> 1; - } - dummy32 = rdummy32; - } + if (dummy32 & 0xffff0000) + dummy32 = bitswap32(dummy32); creds->flags.i = dummy32; ret = krb5_ret_addrs (sp, &creds->addresses); if(ret) goto cleanup;