mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
sd-dhcp6-client: properly calculate buffer size when parsing options
Also make pointer calculations more explicit so they are easier to understand.
This commit is contained in:
parent
d182960ae9
commit
44481a8b53
Notes:
Lennart Poettering
2014-10-24 17:47:29 +02:00
Backport: bugfix
@ -583,12 +583,15 @@ static int client_parse_message(sd_dhcp6_client *client,
|
||||
DHCP6Message *message, size_t len,
|
||||
sd_dhcp6_lease *lease) {
|
||||
int r;
|
||||
uint8_t *optval, *option = (uint8_t *)(message + 1), *id = NULL;
|
||||
uint8_t *optval, *option, *id = NULL;
|
||||
uint16_t optcode, status;
|
||||
size_t optlen, id_len;
|
||||
bool clientid = false;
|
||||
be32_t iaid_lease;
|
||||
|
||||
option = (uint8_t *)message + sizeof(DHCP6Message);
|
||||
len -= sizeof(DHCP6Message);
|
||||
|
||||
while ((r = dhcp6_option_parse(&option, &len, &optcode, &optlen,
|
||||
&optval)) >= 0) {
|
||||
switch (optcode) {
|
||||
|
@ -205,7 +205,7 @@ static uint8_t msg_reply[173] = {
|
||||
static int test_advertise_option(sd_event *e) {
|
||||
_cleanup_dhcp6_lease_free_ sd_dhcp6_lease *lease = NULL;
|
||||
DHCP6Message *advertise = (DHCP6Message *)msg_advertise;
|
||||
uint8_t *optval, *opt = &msg_advertise[sizeof(DHCP6Message)];
|
||||
uint8_t *optval, *opt = msg_advertise + sizeof(DHCP6Message);
|
||||
uint16_t optcode;
|
||||
size_t optlen, len = sizeof(msg_advertise) - sizeof(DHCP6Message);
|
||||
be32_t val;
|
||||
|
Loading…
x
Reference in New Issue
Block a user