store.c (72445) | store.c (78527) |
---|---|
1/* | 1/* |
2 * Copyright (c) 1997-2000 Kungliga Tekniska H�gskolan | 2 * Copyright (c) 1997-2001 Kungliga Tekniska H�gskolan |
3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include "krb5_locl.h" 35 | 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include "krb5_locl.h" 35 |
36RCSID("$Id: store.c,v 1.34 2000/04/11 00:46:09 assar Exp $"); | 36RCSID("$Id: store.c,v 1.35 2001/05/11 13:01:43 joda Exp $"); |
37 | 37 |
38#define BYTEORDER_IS(SP, V) (((SP)->flags & KRB5_STORAGE_BYTEORDER_MASK) == (V)) 39#define BYTEORDER_IS_LE(SP) BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_LE) 40#define BYTEORDER_IS_BE(SP) BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_BE) 41#define BYTEORDER_IS_HOST(SP) (BYTEORDER_IS((SP), KRB5_STORAGE_BYTEORDER_HOST) || \ 42 krb5_storage_is_flags((SP), KRB5_STORAGE_HOST_BYTEORDER)) 43 |
|
38void 39krb5_storage_set_flags(krb5_storage *sp, krb5_flags flags) 40{ 41 sp->flags |= flags; 42} 43 44void 45krb5_storage_clear_flags(krb5_storage *sp, krb5_flags flags) 46{ 47 sp->flags &= ~flags; 48} 49 50krb5_boolean 51krb5_storage_is_flags(krb5_storage *sp, krb5_flags flags) 52{ 53 return (sp->flags & flags) == flags; 54} 55 | 44void 45krb5_storage_set_flags(krb5_storage *sp, krb5_flags flags) 46{ 47 sp->flags |= flags; 48} 49 50void 51krb5_storage_clear_flags(krb5_storage *sp, krb5_flags flags) 52{ 53 sp->flags &= ~flags; 54} 55 56krb5_boolean 57krb5_storage_is_flags(krb5_storage *sp, krb5_flags flags) 58{ 59 return (sp->flags & flags) == flags; 60} 61 |
62void 63krb5_storage_set_byteorder(krb5_storage *sp, krb5_flags byteorder) 64{ 65 sp->flags &= ~KRB5_STORAGE_BYTEORDER_MASK; 66 sp->flags |= byteorder; 67} 68 69krb5_flags 70krb5_storage_get_byteorder(krb5_storage *sp, krb5_flags byteorder) 71{ 72 return sp->flags & KRB5_STORAGE_BYTEORDER_MASK; 73} 74 75 |
|
56ssize_t 57_krb5_put_int(void *buffer, unsigned long value, size_t size) 58{ 59 unsigned char *p = buffer; 60 int i; 61 for (i = size - 1; i >= 0; i--) { 62 p[i] = value & 0xff; 63 value >>= 8; --- 46 unchanged lines hidden (view full) --- 110} 111 112static krb5_error_code 113krb5_store_int(krb5_storage *sp, 114 int32_t value, 115 size_t len) 116{ 117 int ret; | 76ssize_t 77_krb5_put_int(void *buffer, unsigned long value, size_t size) 78{ 79 unsigned char *p = buffer; 80 int i; 81 for (i = size - 1; i >= 0; i--) { 82 p[i] = value & 0xff; 83 value >>= 8; --- 46 unchanged lines hidden (view full) --- 130} 131 132static krb5_error_code 133krb5_store_int(krb5_storage *sp, 134 int32_t value, 135 size_t len) 136{ 137 int ret; |
118 unsigned char v[4]; | 138 unsigned char v[16]; |
119 | 139 |
140 if(len > sizeof(v)) 141 return EINVAL; |
|
120 _krb5_put_int(v, value, len); 121 ret = sp->store(sp, v, len); 122 if (ret != len) 123 return (ret<0)?errno:KRB5_CC_END; 124 return 0; 125} 126 127krb5_error_code 128krb5_store_int32(krb5_storage *sp, 129 int32_t value) 130{ | 142 _krb5_put_int(v, value, len); 143 ret = sp->store(sp, v, len); 144 if (ret != len) 145 return (ret<0)?errno:KRB5_CC_END; 146 return 0; 147} 148 149krb5_error_code 150krb5_store_int32(krb5_storage *sp, 151 int32_t value) 152{ |
131 if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER)) | 153 if(BYTEORDER_IS_HOST(sp)) |
132 value = htonl(value); | 154 value = htonl(value); |
155 else if(BYTEORDER_IS_LE(sp)) 156 value = bswap32(value); |
|
133 return krb5_store_int(sp, value, 4); 134} 135 136static krb5_error_code 137krb5_ret_int(krb5_storage *sp, 138 int32_t *value, 139 size_t len) 140{ --- 10 unchanged lines hidden (view full) --- 151 152krb5_error_code 153krb5_ret_int32(krb5_storage *sp, 154 int32_t *value) 155{ 156 krb5_error_code ret = krb5_ret_int(sp, value, 4); 157 if(ret) 158 return ret; | 157 return krb5_store_int(sp, value, 4); 158} 159 160static krb5_error_code 161krb5_ret_int(krb5_storage *sp, 162 int32_t *value, 163 size_t len) 164{ --- 10 unchanged lines hidden (view full) --- 175 176krb5_error_code 177krb5_ret_int32(krb5_storage *sp, 178 int32_t *value) 179{ 180 krb5_error_code ret = krb5_ret_int(sp, value, 4); 181 if(ret) 182 return ret; |
159 if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER)) 160 *value = ntohl(*value); | 183 if(BYTEORDER_IS_HOST(sp)) 184 *value = htonl(*value); 185 else if(BYTEORDER_IS_LE(sp)) 186 *value = bswap32(*value); |
161 return 0; 162} 163 164krb5_error_code 165krb5_store_int16(krb5_storage *sp, 166 int16_t value) 167{ | 187 return 0; 188} 189 190krb5_error_code 191krb5_store_int16(krb5_storage *sp, 192 int16_t value) 193{ |
168 if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER)) | 194 if(BYTEORDER_IS_HOST(sp)) |
169 value = htons(value); | 195 value = htons(value); |
196 else if(BYTEORDER_IS_LE(sp)) 197 value = bswap16(value); |
|
170 return krb5_store_int(sp, value, 2); 171} 172 173krb5_error_code 174krb5_ret_int16(krb5_storage *sp, 175 int16_t *value) 176{ 177 int32_t v; 178 int ret; 179 ret = krb5_ret_int(sp, &v, 2); 180 if(ret) 181 return ret; 182 *value = v; | 198 return krb5_store_int(sp, value, 2); 199} 200 201krb5_error_code 202krb5_ret_int16(krb5_storage *sp, 203 int16_t *value) 204{ 205 int32_t v; 206 int ret; 207 ret = krb5_ret_int(sp, &v, 2); 208 if(ret) 209 return ret; 210 *value = v; |
183 if(krb5_storage_is_flags(sp, KRB5_STORAGE_HOST_BYTEORDER)) 184 *value = ntohs(*value); | 211 if(BYTEORDER_IS_HOST(sp)) 212 *value = htons(*value); 213 else if(BYTEORDER_IS_LE(sp)) 214 *value = bswap16(*value); |
185 return 0; 186} 187 188krb5_error_code 189krb5_store_int8(krb5_storage *sp, 190 int8_t value) 191{ 192 int ret; --- 442 unchanged lines hidden --- | 215 return 0; 216} 217 218krb5_error_code 219krb5_store_int8(krb5_storage *sp, 220 int8_t value) 221{ 222 int ret; --- 442 unchanged lines hidden --- |