add more byteorder storage flags
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9908 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -401,10 +401,14 @@ struct krb5_rcache_data;
|
|||||||
typedef struct krb5_rcache_data *krb5_rcache;
|
typedef struct krb5_rcache_data *krb5_rcache;
|
||||||
typedef Authenticator krb5_donot_replay;
|
typedef Authenticator krb5_donot_replay;
|
||||||
|
|
||||||
#define KRB5_STORAGE_HOST_BYTEORDER 0x01
|
#define KRB5_STORAGE_HOST_BYTEORDER 0x01 /* old */
|
||||||
#define KRB5_STORAGE_PRINCIPAL_WRONG_NUM_COMPONENTS 0x02
|
#define KRB5_STORAGE_PRINCIPAL_WRONG_NUM_COMPONENTS 0x02
|
||||||
#define KRB5_STORAGE_PRINCIPAL_NO_NAME_TYPE 0x04
|
#define KRB5_STORAGE_PRINCIPAL_NO_NAME_TYPE 0x04
|
||||||
#define KRB5_STORAGE_KEYBLOCK_KEYTYPE_TWICE 0x08
|
#define KRB5_STORAGE_KEYBLOCK_KEYTYPE_TWICE 0x08
|
||||||
|
#define KRB5_STORAGE_BYTEORDER_MASK 0x60
|
||||||
|
#define KRB5_STORAGE_BYTEORDER_BE 0x00 /* default */
|
||||||
|
#define KRB5_STORAGE_BYTEORDER_LE 0x20
|
||||||
|
#define KRB5_STORAGE_BYTEORDER_HOST 0x40
|
||||||
|
|
||||||
typedef struct krb5_storage {
|
typedef struct krb5_storage {
|
||||||
void *data;
|
void *data;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997-2000 Kungliga Tekniska H<>gskolan
|
* Copyright (c) 1997-2001 Kungliga Tekniska H<>gskolan
|
||||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,6 +35,12 @@
|
|||||||
|
|
||||||
RCSID("$Id$");
|
RCSID("$Id$");
|
||||||
|
|
||||||
|
#define BYTEORDER_IS(SP, V) (((SP)->flags & KRB5_STORAGE_BYTEORDER_MASK) == (V))
|
||||||
|
#define BYTEORDER_IS_LE(SP) BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_LE)
|
||||||
|
#define BYTEORDER_IS_BE(SP) BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_BE)
|
||||||
|
#define BYTEORDER_IS_HOST(SP) (BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_HOST) || \
|
||||||
|
krb5_storage_is_flags((SP), KRB5_STORAGE_HOST_BYTEORDER))
|
||||||
|
|
||||||
void
|
void
|
||||||
krb5_storage_set_flags(krb5_storage *sp, krb5_flags flags)
|
krb5_storage_set_flags(krb5_storage *sp, krb5_flags flags)
|
||||||
{
|
{
|
||||||
@@ -53,6 +59,20 @@ krb5_storage_is_flags(krb5_storage *sp, krb5_flags flags)
|
|||||||
return (sp->flags & flags) == flags;
|
return (sp->flags & flags) == flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
krb5_storage_set_byteorder(krb5_storage *sp, krb5_flags byteorder)
|
||||||
|
{
|
||||||
|
sp->flags &= ~KRB5_STORAGE_BYTEORDER_MASK;
|
||||||
|
sp->flags |= byteorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
krb5_flags
|
||||||
|
krb5_storage_get_byteorder(krb5_storage *sp, krb5_flags byteorder)
|
||||||
|
{
|
||||||
|
return sp->flags & KRB5_STORAGE_BYTEORDER_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
_krb5_put_int(void *buffer, unsigned long value, size_t size)
|
_krb5_put_int(void *buffer, unsigned long value, size_t size)
|
||||||
{
|
{
|
||||||
@@ -115,8 +135,10 @@ krb5_store_int(krb5_storage *sp,
|
|||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
unsigned char v[4];
|
unsigned char v[16];
|
||||||
|
|
||||||
|
if(len > sizeof(v))
|
||||||
|
return EINVAL;
|
||||||
_krb5_put_int(v, value, len);
|
_krb5_put_int(v, value, len);
|
||||||
ret = sp->store(sp, v, len);
|
ret = sp->store(sp, v, len);
|
||||||
if (ret != len)
|
if (ret != len)
|
||||||
@@ -128,8 +150,10 @@ krb5_error_code
|
|||||||
krb5_store_int32(krb5_storage *sp,
|
krb5_store_int32(krb5_storage *sp,
|
||||||
int32_t value)
|
int32_t value)
|
||||||
{
|
{
|
||||||
if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
|
if(BYTEORDER_IS_HOST(sp))
|
||||||
value = htonl(value);
|
value = htonl(value);
|
||||||
|
else if(BYTEORDER_IS_LE(sp))
|
||||||
|
value = bswap32(value);
|
||||||
return krb5_store_int(sp, value, 4);
|
return krb5_store_int(sp, value, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,8 +180,10 @@ krb5_ret_int32(krb5_storage *sp,
|
|||||||
krb5_error_code ret = krb5_ret_int(sp, value, 4);
|
krb5_error_code ret = krb5_ret_int(sp, value, 4);
|
||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
|
if(BYTEORDER_IS_HOST(sp))
|
||||||
*value = ntohl(*value);
|
*value = htonl(*value);
|
||||||
|
else if(BYTEORDER_IS_LE(sp))
|
||||||
|
*value = bswap32(*value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,8 +191,10 @@ krb5_error_code
|
|||||||
krb5_store_int16(krb5_storage *sp,
|
krb5_store_int16(krb5_storage *sp,
|
||||||
int16_t value)
|
int16_t value)
|
||||||
{
|
{
|
||||||
if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
|
if(BYTEORDER_IS_HOST(sp))
|
||||||
value = htons(value);
|
value = htons(value);
|
||||||
|
else if(BYTEORDER_IS_LE(sp))
|
||||||
|
value = bswap16(value);
|
||||||
return krb5_store_int(sp, value, 2);
|
return krb5_store_int(sp, value, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,8 +208,10 @@ krb5_ret_int16(krb5_storage *sp,
|
|||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
*value = v;
|
*value = v;
|
||||||
if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
|
if(BYTEORDER_IS_HOST(sp))
|
||||||
*value = ntohs(*value);
|
*value = htons(*value);
|
||||||
|
else if(BYTEORDER_IS_LE(sp))
|
||||||
|
*value = bswap16(*value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user