logo       

Re: [PATCH] IPSec: IPv6 source address not set correctly in xfrm_state: msg#00185

Subject: Re: [PATCH] IPSec: IPv6 source address not set correctly in xfrm_state
Hello!

In article <1048258764.1214.28.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> (at 21 
Mar 2003 08:59:23 -0600), Tom Lendacky <toml@xxxxxxxxxx> says:

>                       memcpy(&x->id.daddr, daddr, sizeof(x->sel.daddr));
>               memcpy(&x->props.saddr, &tmpl->saddr, sizeof(x->props.saddr));
>               if (ipv6_addr_any((struct in6_addr*)&x->props.saddr))
> -                     memcpy(&x->props.saddr, &saddr, sizeof(x->sel.saddr));
> +                     memcpy(&x->props.saddr, saddr, sizeof(x->props.saddr));

this fix is ok. however

>               atomic_inc(&x0->refcnt);
>       } else if (create && (x0 = xfrm_state_alloc()) != NULL) {
> -             memcpy(x0->sel.daddr.a6, daddr, sizeof(struct in6_addr));
> -             memcpy(x0->sel.saddr.a6, saddr, sizeof(struct in6_addr));
> +             memcpy(&x0->sel.daddr.a6, daddr, sizeof(struct in6_addr));
> +             memcpy(&x0->sel.saddr.a6, saddr, sizeof(struct in6_addr));
>               x0->sel.prefixlen_d = 128;
>               x0->sel.prefixlen_s = 128;
> -             memcpy(x0->props.saddr.a6, saddr, sizeof(struct in6_addr));
> +             memcpy(&x0->props.saddr.a6, saddr, sizeof(struct in6_addr));
>               x0->km.state = XFRM_STATE_ACQ;
> -             memcpy(x0->id.daddr.a6, daddr, sizeof(struct in6_addr));
> +             memcpy(&x0->id.daddr.a6, daddr, sizeof(struct in6_addr));
>               x0->id.proto = proto;
>               x0->props.family = AF_INET6;
>               x0->props.mode = mode;

these are not correct.

-- 
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA




<Prev in Thread] Current Thread [Next in Thread>