Skip to content

Commit a4a73ef

Browse files
committed
Addressed copilot comments
1 parent f9cd029 commit a4a73ef

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

src/test/unit/unit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ Suite *wolf_suite(void)
654654
tcase_add_test(tc_proto, test_dns_query_and_callback_a);
655655
tcase_add_test(tc_proto, test_dhcp_parse_offer_and_ack);
656656
tcase_add_test(tc_proto, test_dhcp_schedule_lease_timer_defaults_t1_t2);
657+
tcase_add_test(tc_proto, test_dhcp_schedule_lease_timer_small_lease_clamps_t1_t2);
657658
tcase_add_test(tc_proto, test_dhcp_parse_offer_defaults_mask_when_missing);
658659
tcase_add_test(tc_proto, test_dhcp_parse_offer_rejects_mismatched_xid);
659660
tcase_add_test(tc_proto, test_dhcp_parse_ack_rejects_mismatched_xid);

src/test/unit/unit_tests_dns_dhcp.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ START_TEST(test_dhcp_parse_offer_and_ack)
103103
opt->data[2] = (router_ip >> 8) & 0xFF;
104104
opt->data[3] = (router_ip >> 0) & 0xFF;
105105
opt = (struct dhcp_option *)((uint8_t *)opt + 6);
106-
opt->code = 51;
106+
opt->code = DHCP_OPTION_LEASE_TIME;
107107
opt->len = 4;
108108
opt->data[0] = (lease_s >> 24) & 0xFF;
109109
opt->data[1] = (lease_s >> 16) & 0xFF;
@@ -148,6 +148,23 @@ START_TEST(test_dhcp_schedule_lease_timer_defaults_t1_t2)
148148
}
149149
END_TEST
150150

151+
START_TEST(test_dhcp_schedule_lease_timer_small_lease_clamps_t1_t2)
152+
{
153+
struct wolfIP s;
154+
155+
wolfIP_init(&s);
156+
s.last_tick = 1000U;
157+
158+
dhcp_schedule_lease_timer(&s, 1U, 0, 0);
159+
160+
ck_assert_int_ne(s.dhcp_timer, NO_TIMER);
161+
ck_assert_uint_eq(s.dhcp_renew_at, 2000U);
162+
ck_assert_uint_eq(s.dhcp_rebind_at, 2000U);
163+
ck_assert_uint_eq(s.dhcp_lease_expires, 2000U);
164+
ck_assert_uint_eq(find_timer_expiry(&s, s.dhcp_timer), s.dhcp_renew_at);
165+
}
166+
END_TEST
167+
151168
START_TEST(test_dhcp_parse_offer_defaults_mask_when_missing)
152169
{
153170
struct wolfIP s;

src/wolfip.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5142,12 +5142,22 @@ static void dhcp_schedule_lease_timer(struct wolfIP *s,
51425142
if (!s || lease_s == 0)
51435143
return;
51445144

5145-
if (renew_s == 0 || renew_s > lease_s)
5145+
if (renew_s == 0 || renew_s > lease_s) {
51465146
renew_s = lease_s / 2U;
5147-
if (rebind_s == 0 || rebind_s > lease_s)
5147+
if (renew_s == 0)
5148+
renew_s = 1U;
5149+
}
5150+
if (rebind_s == 0 || rebind_s > lease_s) {
51485151
rebind_s = (uint32_t)(((uint64_t)lease_s * 7U) / 8U);
5152+
if (rebind_s == 0)
5153+
rebind_s = 1U;
5154+
}
51495155
if (rebind_s < renew_s)
51505156
rebind_s = renew_s;
5157+
if (renew_s > lease_s)
5158+
renew_s = lease_s;
5159+
if (rebind_s > lease_s)
5160+
rebind_s = lease_s;
51515161

51525162
lease_ms = (uint64_t)lease_s * 1000U;
51535163
renew_ms = (uint64_t)renew_s * 1000U;

0 commit comments

Comments
 (0)