zhekunren opened a new pull request, #19714:
URL: https://github.com/apache/nuttx/pull/19714

   igmp_input() verified the packet length with:
   
     if (dev->d_len < NET_LL_HDRLEN(dev) + (iphdrlen + IGMP_HDRLEN))
   
   but dev->d_len at this point holds the IPv4 total length (IP header plus 
payload) without the link-layer header, consistent with the convention 
established in ipv4_in()/ipv6_in() (which do `dev->d_len -= 
NET_LL_HDRLEN(dev)`) and used by all other transport input handlers (icmp, tcp, 
udp), none of which reference NET_LL_HDRLEN.
   
   Adding NET_LL_HDRLEN(dev) to the right-hand side made the check always true 
for valid IGMP packets:
   
     iphdrlen + IGMP_HDRLEN < NET_LL_HDRLEN + iphdrlen + IGMP_HDRLEN
                            (= 0 < NET_LL_HDRLEN)
   
   so every well-formed IGMP message hit the "Length error" path and was 
silently dropped, breaking IGMP membership query/report processing.
   
   Drop the extra NET_LL_HDRLEN(dev) so the check matches the other protocol 
handlers.
   
   *Note: Please adhere to [Contributing 
Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md).*
   
   ## Summary
   
   *Update this section with information on why change is necessary,
    what it exactly does and how, if new feature shows up, provide
    references (dependencies, similar problems and solutions), etc.*
   
   ## Impact
   
   *Update this section, where applicable, on how change affects users,
    build process, hardware, documentation, security, compatibility, etc.*
   
   ## Testing
   
   *This section should provide a detailed description of what you did
   to verify your changes work and do not break existing code.*
   
   *Please provide information about your host machine, the board(s) you
   tested your changes on, and how you tested. Logs should be included.*
   
   *For example, when changing something in the core OS functions, you
   may want to run the OSTest application to verify that there are no
   regressions. Changes to ADC code may warrant running the `adc`
   example. Adding a new uORB driver may require that you run
   `uorb_listener` to verify correct operation.*
   
   *Pure documentation changes can just be tested with `make html`
   (see docs) and verification of the correct format in your
   browser.*
   
   **_PRs without testing information will not be accepted. We will
   request test logs._**
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to