diff options
| author | Hans Dedecker | 2020-12-08 17:43:38 +0000 |
|---|---|---|
| committer | Hans Dedecker | 2020-12-08 17:46:54 +0000 |
| commit | 0ffa3a31f7146d320214f431291c1196070a010f (patch) | |
| tree | 2d387b0982a1cbf15cc0ae34f473bf1b693f5e88 | |
| parent | 3999b6d3947bcaa2def874311b427a2ea0efba5b (diff) | |
| download | odhcp6c-0ffa3a31f7146d320214f431291c1196070a010f.tar.gz | |
dhcpv6: harden reconfigure logic
Check if a valid DHCPv6 message is returned by dhcpv6_request in
dhcpv6_poll_reconfigure as only RENEW/REBIND/INFORMATION REQUEST
messages can trigger the transmission of these messages in reply
to a RECONFIGURE
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
| -rw-r--r-- | src/dhcpv6.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/dhcpv6.c b/src/dhcpv6.c index 312e7aa..b9eac43 100644 --- a/src/dhcpv6.c +++ b/src/dhcpv6.c @@ -849,8 +849,21 @@ int dhcpv6_poll_reconfigure(void) { int ret = dhcpv6_request(DHCPV6_MSG_UNKNOWN); - if (ret != -1) + switch (ret) { + /* + * Only RENEW/REBIND/INFORMATION REQUEST + * messaage transmission can be requested + * by a RECONFIGURE + */ + case DHCPV6_MSG_RENEW: + case DHCPV6_MSG_REBIND: + case DHCPV6_MSG_INFO_REQ: ret = dhcpv6_request(ret); + break; + + default: + break; + } return ret; } |