Jelajahi Sumber

lwip: Fix undefined behavior.

Ambroz Bizjak 11 tahun lalu
induk
melakukan
cedb690976
1 mengubah file dengan 3 tambahan dan 2 penghapusan
  1. 3 2
      lwip/src/core/netif.c

+ 3 - 2
lwip/src/core/netif.c

@@ -858,7 +858,7 @@ netif_matches_ip6_addr(struct netif * netif, ip6_addr_t * ip6addr)
 void
 void
 netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
 netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
 {
 {
-  u8_t i, addr_index;
+  u8_t i, addr_index, min_len;
 
 
   /* Link-local prefix. */
   /* Link-local prefix. */
   netif->ip6_addr[0].addr[0] = PP_HTONL(0xfe800000ul);
   netif->ip6_addr[0].addr[0] = PP_HTONL(0xfe800000ul);
@@ -881,8 +881,9 @@ netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
     netif->ip6_addr[0].addr[2] = 0;
     netif->ip6_addr[0].addr[2] = 0;
     netif->ip6_addr[0].addr[3] = 0;
     netif->ip6_addr[0].addr[3] = 0;
 
 
+    min_len = netif->hwaddr_len < 8 ? netif->hwaddr_len : 8;
     addr_index = 3;
     addr_index = 3;
-    for (i = 0; i < 8; i++) {
+    for (i = 0; i < min_len; i++) {
       if (i == 4) {
       if (i == 4) {
         addr_index--;
         addr_index--;
       }
       }