Skip to content

Commit adeb28d

Browse files
jukkarmmahadevan108
authored andcommitted
net: dhcpv4: Fix DNS server list allocation
Allocate one extra pointer for the DNS server list so that DNS resolving code can detect the end of the list. Signed-off-by: Jukka Rissanen <[email protected]>
1 parent 52d21d7 commit adeb28d

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

subsys/net/lib/dhcpv4/dhcpv4.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,14 +1054,15 @@ static bool dhcpv4_parse_options(struct net_pkt *pkt,
10541054
break;
10551055
}
10561056
#if defined(CONFIG_DNS_RESOLVER)
1057+
#define MAX_DNS_SERVERS CONFIG_DNS_RESOLVER_MAX_SERVERS
10571058
case DHCPV4_OPTIONS_DNS_SERVER: {
10581059
struct dns_resolve_context *ctx;
1059-
struct sockaddr_in dnses[CONFIG_DNS_RESOLVER_MAX_SERVERS] = { 0 };
1060-
const struct sockaddr *dns_servers[CONFIG_DNS_RESOLVER_MAX_SERVERS];
1060+
struct sockaddr_in dnses[MAX_DNS_SERVERS] = { 0 };
1061+
const struct sockaddr *dns_servers[MAX_DNS_SERVERS + 1] = { 0 };
10611062
const uint8_t addr_size = 4U;
10621063
int status;
10631064

1064-
for (uint8_t i = 0; i < CONFIG_DNS_RESOLVER_MAX_SERVERS; i++) {
1065+
for (uint8_t i = 0; i < MAX_DNS_SERVERS; i++) {
10651066
dns_servers[i] = (struct sockaddr *)&dnses[i];
10661067
}
10671068

@@ -1079,12 +1080,11 @@ static bool dhcpv4_parse_options(struct net_pkt *pkt,
10791080
const uint8_t provided_servers_cnt = length / addr_size;
10801081
uint8_t dns_servers_cnt = 0;
10811082

1082-
if (provided_servers_cnt > CONFIG_DNS_RESOLVER_MAX_SERVERS) {
1083+
if (provided_servers_cnt > MAX_DNS_SERVERS) {
10831084
NET_WARN("DHCP server provided more DNS servers than can be saved");
1084-
dns_servers_cnt = CONFIG_DNS_RESOLVER_MAX_SERVERS;
1085+
dns_servers_cnt = MAX_DNS_SERVERS;
10851086
} else {
1086-
for (uint8_t i = provided_servers_cnt;
1087-
i < CONFIG_DNS_RESOLVER_MAX_SERVERS; i++) {
1087+
for (uint8_t i = provided_servers_cnt; i < MAX_DNS_SERVERS; i++) {
10881088
dns_servers[i] = NULL;
10891089
}
10901090

0 commit comments

Comments
 (0)