On Wed, Feb 02, 2011 at 04:14:01PM +0100, Mike Belopuhov wrote:
> hi, in pf_translate, when we're changing addresses for the icmp messages
> there's an unjustified fallthrough in the IPPROTO_ICMPV6 case.  in fact
> this doesn't seem to harm anything because default case performs the
> same operation.  note that pd->ip_sum is null in ipv6 case so pf_change_a6
> just punches a translation address to the packet with PF_ACPY.
> 
> henning@ agrees that this fallthrough was introduced by mistake, but we
> won't mind if somebody with pf knowledge will glance through the code.

I think there is a missing check and fallthrough in the icmp case.

The logic should be

if (proto == tcp) {
} else if (proto == udp) {
} else if (proto == icmp && af == inet) {
} else if (proto == icmp6 && af == inet6) {
} else {
}

The current code would do icmp processing for an ipv6 packet with
protocol 1.  Such a packet is strange but it should not get special
translation treatment.

bluhm

Reply via email to