]> err.no Git - linux-2.6/commitdiff
[IPSEC]: Ensure that state inner family is set
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 31 Jul 2007 09:04:32 +0000 (02:04 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Tue, 31 Jul 2007 09:28:32 +0000 (02:28 -0700)
Similar to the issue we had with template families which
specified the inner families of policies, we need to set
the inner families of states as the main xfrm user Openswan
leaves it as zero.

af_key is unaffected because the inner family is set by it
and not the KM.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/xfrm/xfrm_user.c

index c06883bf620ee21fa896654847fc4ee85f445e33..61339e17a0f5dd52bb3ba69f24b47366833d5dc4 100644 (file)
@@ -322,6 +322,13 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info *
        x->props.family = p->family;
        memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr));
        x->props.flags = p->flags;
+
+       /*
+        * Set inner address family if the KM left it as zero.
+        * See comment in validate_tmpl.
+        */
+       if (!x->sel.family)
+               x->sel.family = p->family;
 }
 
 /*