summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Dedecker2020-12-08 17:43:38 +0000
committerHans Dedecker2020-12-08 17:46:54 +0000
commit0ffa3a31f7146d320214f431291c1196070a010f (patch)
tree2d387b0982a1cbf15cc0ae34f473bf1b693f5e88
parent3999b6d3947bcaa2def874311b427a2ea0efba5b (diff)
downloadodhcp6c-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.c15
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;
}