|
|
|
@ -113,6 +113,12 @@ struct software { |
|
|
|
/* XXX add const in functions */ |
|
|
|
|
|
|
|
|
|
|
|
static uint64_t be64toh_unaligned(const char *s) { |
|
|
|
uint64_t u; |
|
|
|
memcpy(&u, s, sizeof(u)); |
|
|
|
return be64toh(u); |
|
|
|
} |
|
|
|
|
|
|
|
static int stun_attributes(struct stun_attrs *out, str *s, uint16_t *unknowns, struct header *req) { |
|
|
|
struct tlv *tlv; |
|
|
|
int len, type, uc; |
|
|
|
@ -170,7 +176,7 @@ static int stun_attributes(struct stun_attrs *out, str *s, uint16_t *unknowns, s |
|
|
|
return -1; |
|
|
|
if (attr.len != 8) |
|
|
|
return -1; |
|
|
|
out->tiebreaker = be64toh(*((uint64_t *) attr.s)); |
|
|
|
out->tiebreaker = be64toh_unaligned(attr.s); |
|
|
|
out->controlled = 1; |
|
|
|
break; |
|
|
|
|
|
|
|
@ -179,7 +185,7 @@ static int stun_attributes(struct stun_attrs *out, str *s, uint16_t *unknowns, s |
|
|
|
return -1; |
|
|
|
if (attr.len != 8) |
|
|
|
return -1; |
|
|
|
out->tiebreaker = be64toh(*((uint64_t *) attr.s)); |
|
|
|
out->tiebreaker = be64toh_unaligned(attr.s); |
|
|
|
out->controlling = 1; |
|
|
|
break; |
|
|
|
|
|
|
|
|