diff options
author | Martin Willi <martin@strongswan.org> | 2006-12-12 08:41:04 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2006-12-12 08:41:04 +0000 |
commit | 313d21c2513821bc943d32de06f88f01a6b215ae (patch) | |
tree | e1b01e19c4d6fc2a1fb6b791573860c23c80fe97 /src | |
parent | 5347a84f81cc97478bddb426d1ac5018387c6fff (diff) | |
download | strongswan-313d21c2513821bc943d32de06f88f01a6b215ae.tar.bz2 strongswan-313d21c2513821bc943d32de06f88f01a6b215ae.tar.xz |
fixed some byte-order issues
Diffstat (limited to 'src')
-rw-r--r-- | src/charon/encoding/generator.c | 13 | ||||
-rw-r--r-- | src/charon/encoding/payloads/ke_payload.c | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/charon/encoding/generator.c b/src/charon/encoding/generator.c index 847fda49f..07db45f1b 100644 --- a/src/charon/encoding/generator.c +++ b/src/charon/encoding/generator.c @@ -381,11 +381,14 @@ static void generate_u_int_type (private_generator_t *this,encoding_type_t int_t /* get value of attribute format flag */ u_int8_t attribute_format_flag = *(this->out_position) & 0x80; /* get attribute type value as 16 bit integer*/ - u_int16_t int16_val = htons(*((u_int16_t*)(this->data_struct + offset))); - /* last bit must be unset */ - int16_val = int16_val & 0xFF7F; - - int16_val = int16_val | attribute_format_flag; + u_int16_t int16_val = *((u_int16_t*)(this->data_struct + offset)); + /* unset most significant bit */ + int16_val &= 0x7FFF; + if (attribute_format_flag) + { + int16_val |= 0x8000; + } + int16_val = htons(int16_val); DBG3(DBG_ENC, " => %d", int16_val); /* write bytes to buffer (set bit is overwritten)*/ this->write_bytes_to_buffer(this,&int16_val,sizeof(u_int16_t)); diff --git a/src/charon/encoding/payloads/ke_payload.c b/src/charon/encoding/payloads/ke_payload.c index 5a83fd0a2..8926b15f9 100644 --- a/src/charon/encoding/payloads/ke_payload.c +++ b/src/charon/encoding/payloads/ke_payload.c @@ -58,7 +58,7 @@ struct private_ke_payload_t { /** * DH Group Number. */ - diffie_hellman_group_t dh_group_number; + u_int16_t dh_group_number; /** * Key Exchange Data of this KE payload. |