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
	 Johan Danielsson
					Johan Danielsson