[openthread][ethernet][wifi] Add IPv6 address array bounds assert (#14488)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jonathan Swoboda
2026-03-05 12:29:44 -10:00
committed by GitHub
co-authored by Claude Opus 4.6
parent b2c12d88fe
commit 8a8f6824a2
6 changed files with 9 additions and 1 deletions
@@ -470,6 +470,7 @@ network::IPAddresses EthernetComponent::get_ip_addresses() {
uint8_t count = 0;
count = esp_netif_get_all_ip6(this->eth_netif_, if_ip6s);
assert(count <= CONFIG_LWIP_IPV6_NUM_ADDRESSES);
assert(count < addresses.size());
for (int i = 0; i < count; i++) {
addresses[i + 1] = network::IPAddress(&if_ip6s[i]);
}
+1 -1
View File
@@ -90,7 +90,7 @@ class InstanceLock {
otInstance *get_instance();
private:
// Use a private constructor in order to force thehandling
// Use a private constructor in order to force the handling
// of acquisition failure
InstanceLock() {}
};
@@ -197,6 +197,7 @@ network::IPAddresses OpenThreadComponent::get_ip_addresses() {
esp_netif_t *netif = esp_netif_get_default_netif();
count = esp_netif_get_all_ip6(netif, if_ip6s);
assert(count <= CONFIG_LWIP_IPV6_NUM_ADDRESSES);
assert(count < addresses.size());
for (int i = 0; i < count; i++) {
addresses[i + 1] = network::IPAddress(&if_ip6s[i]);
}
@@ -6,6 +6,7 @@
#include <user_interface.h>
#include <cassert>
#include <utility>
#include <algorithm>
#ifdef USE_WIFI_WPA2_EAP
@@ -205,6 +206,7 @@ network::IPAddresses WiFiComponent::wifi_sta_ip_addresses() {
network::IPAddresses addresses;
uint8_t index = 0;
for (auto &addr : addrList) {
assert(index < addresses.size());
addresses[index++] = addr.ipFromNetifNum();
}
return addresses;
@@ -585,6 +585,7 @@ network::IPAddresses WiFiComponent::wifi_sta_ip_addresses() {
uint8_t count = 0;
count = esp_netif_get_all_ip6(s_sta_netif, if_ip6s);
assert(count <= CONFIG_LWIP_IPV6_NUM_ADDRESSES);
assert(count < addresses.size());
for (int i = 0; i < count; i++) {
addresses[i + 1] = network::IPAddress(&if_ip6s[i]);
}
@@ -3,6 +3,8 @@
#ifdef USE_WIFI
#ifdef USE_RP2040
#include <cassert>
#include "lwip/dns.h"
#include "lwip/err.h"
#include "lwip/netif.h"
@@ -285,6 +287,7 @@ network::IPAddresses WiFiComponent::wifi_sta_ip_addresses() {
if (ip == ap_ip) {
continue;
}
assert(index < addresses.size());
addresses[index++] = ip;
}
return addresses;