On Mon, Nov 06, 2017 at 11:16:46AM +0100, Steffen Klassert wrote: > > Subject: [PATCH ipsec] xfrm: Fix stack-out-of-bounds read in xfrm_state_find. > > When we do tunnel or beet mode, we pass saddr and daddr from the > template to xfrm_state_find(), this is ok. On transport mode, > we pass the addresses from the flowi, assuming that the IP > addresses (and address family) don't change during transformation. > This assumption is wrong in the IPv4 mapped IPv6 case, packet > is IPv4 and template is IPv6. Fix this by using the addresses > from the template unconditionally. > > Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com>
I had to revert this, it broke transport mode when the policy template has no src and dst addresses configured. I'll come up with some other fix, probably don't do policy/flow maching when a socket policies address family does not match the flow address family. This should hopefully fix this whole class of IPv4 mapped IPv6 with socket policy bugs.