diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2016-01-28 04:33:48 +0000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2016-01-28 15:46:56 +0000 |
commit | 8a8005f7ca8973702b36e711993bfff89ca9600c (patch) | |
tree | 35a11ed04a3a47a382dffcbdebb63d6d2ff74a17 /src/ra.c | |
parent | d277ddb78abd034eb0e1c088ac969cdeef10d9e2 (diff) | |
download | odhcp6c-8a8005f7ca8973702b36e711993bfff89ca9600c.tar.gz |
Add padding between odhcp6c_entry structures to ensure 32-bit alignment
struct odhcp6c_entry is not declared as __packed, so the compiler may
assume it is naturally aligned.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'src/ra.c')
-rw-r--r-- | src/ra.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -444,8 +444,9 @@ bool ra_process(void) size_t ra_dns_len; uint8_t *start = odhcp6c_get_state(states[i], &ra_dns_len); for (struct odhcp6c_entry *c = (struct odhcp6c_entry*)start; - (uint8_t*)c < &start[ra_dns_len] && &c->auxtarget[c->auxlen] <= &start[ra_dns_len]; - c = (struct odhcp6c_entry*)(&c->auxtarget[c->auxlen])) + (uint8_t*)c < &start[ra_dns_len] && + (uint8_t*)odhcp6c_next_entry(c) <= &start[ra_dns_len]; + c = odhcp6c_next_entry(c)) if (IN6_ARE_ADDR_EQUAL(&c->router, &from.sin6_addr) && c->valid > router_valid) c->valid = router_valid; |