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 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_NO_NAME_TYPE		0x04
 | 
			
		||||
#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 {
 | 
			
		||||
    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). 
 | 
			
		||||
 * All rights reserved. 
 | 
			
		||||
 *
 | 
			
		||||
@@ -35,6 +35,12 @@
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
_krb5_put_int(void *buffer, unsigned long value, size_t size)
 | 
			
		||||
{
 | 
			
		||||
@@ -115,8 +135,10 @@ krb5_store_int(krb5_storage *sp,
 | 
			
		||||
	       size_t len)
 | 
			
		||||
{
 | 
			
		||||
    int ret;
 | 
			
		||||
    unsigned char v[4];
 | 
			
		||||
    unsigned char v[16];
 | 
			
		||||
 | 
			
		||||
    if(len > sizeof(v))
 | 
			
		||||
	return EINVAL;
 | 
			
		||||
    _krb5_put_int(v, value, len);
 | 
			
		||||
    ret = sp->store(sp, v, len);
 | 
			
		||||
    if (ret != len)
 | 
			
		||||
@@ -128,8 +150,10 @@ krb5_error_code
 | 
			
		||||
krb5_store_int32(krb5_storage *sp,
 | 
			
		||||
		 int32_t value)
 | 
			
		||||
{
 | 
			
		||||
    if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
 | 
			
		||||
    if(BYTEORDER_IS_HOST(sp))
 | 
			
		||||
	value = htonl(value);
 | 
			
		||||
    else if(BYTEORDER_IS_LE(sp))
 | 
			
		||||
	value = bswap32(value);
 | 
			
		||||
    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);
 | 
			
		||||
    if(ret)
 | 
			
		||||
	return ret;
 | 
			
		||||
    if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
 | 
			
		||||
	*value = ntohl(*value);
 | 
			
		||||
    if(BYTEORDER_IS_HOST(sp))
 | 
			
		||||
	*value = htonl(*value);
 | 
			
		||||
    else if(BYTEORDER_IS_LE(sp))
 | 
			
		||||
	*value = bswap32(*value);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -165,8 +191,10 @@ krb5_error_code
 | 
			
		||||
krb5_store_int16(krb5_storage *sp,
 | 
			
		||||
		 int16_t value)
 | 
			
		||||
{
 | 
			
		||||
    if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
 | 
			
		||||
    if(BYTEORDER_IS_HOST(sp))
 | 
			
		||||
	value = htons(value);
 | 
			
		||||
    else if(BYTEORDER_IS_LE(sp))
 | 
			
		||||
	value = bswap16(value);
 | 
			
		||||
    return krb5_store_int(sp, value, 2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -180,8 +208,10 @@ krb5_ret_int16(krb5_storage *sp,
 | 
			
		||||
    if(ret)
 | 
			
		||||
	return ret;
 | 
			
		||||
    *value = v;
 | 
			
		||||
    if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER))
 | 
			
		||||
	*value = ntohs(*value);
 | 
			
		||||
    if(BYTEORDER_IS_HOST(sp))
 | 
			
		||||
	*value = htons(*value);
 | 
			
		||||
    else if(BYTEORDER_IS_LE(sp))
 | 
			
		||||
	*value = bswap16(*value);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user