On 2/25/20 12:39 AM, Ben Pfaff wrote:
> The call to packet_set_ipv6() calls into packet_rh_present(), which in
> turn iterates through the L3 content.  Without this commit, the l4_ofs
> in the packet has its default value of UINT16_MAX, which means that
> packet_rh_present() reads well beyond the real maximum length of the
> IPv6 header.

Oops, sorry about that. Thanks for fixing it!

> 
> Reported by Address Sanitizer (actually the MLD test fails 100% of the
> time with Address Sanitizer without this fix, so I guess I'm the only
> one who uses it routinely).

I'll try to run it regularly from now on.

> 
> CC: Dumitru Ceara <[email protected]>
> Fixes: 677a3ba4d66b ("ovn: Add MLD support.")
> Signed-off-by: Ben Pfaff <[email protected]>

Acked-by: Dumitru Ceara <[email protected]>

> ---
>  controller/pinctrl.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> index d06915a65173..dc8d3fd28ea0 100644
> --- a/controller/pinctrl.c
> +++ b/controller/pinctrl.c
> @@ -3238,6 +3238,7 @@ pinctrl_compose_ipv6(struct dp_packet *packet, struct 
> eth_addr eth_src,
>      eh->eth_src = eth_src;
>      eh->eth_type = htons(ETH_TYPE_IPV6);
>      dp_packet_set_l3(packet, nh);
> +    dp_packet_set_l4(packet, nh + 1);
>  
>      nh->ip6_vfc = 0x60;
>      nh->ip6_nxt = ip_proto;
> 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to