The structure size used in grub_netbuff_pull to get the pointer to
option header is apparently wrong, which leads to subsequent range check
failed and therefore not responding to any neighbor solicit message in my
testing.
---
 grub-core/net/icmp6.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/grub-core/net/icmp6.c b/grub-core/net/icmp6.c
index bbc9020..796d549 100644
--- a/grub-core/net/icmp6.c
+++ b/grub-core/net/icmp6.c
@@ -205,7 +205,7 @@ grub_net_recv_icmp6_packet (struct grub_net_buff *nb,
        if (ttl != 0xff)
          break;
        nbh = (struct neighbour_solicit *) nb->data;
-       err = grub_netbuff_pull (nb, sizeof (struct router_adv));
+       err = grub_netbuff_pull (nb, sizeof (*nbh));
        if (err)
          {
            grub_netbuff_free (nb);
-- 
1.7.3.4


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to