[XFRM] xfrm_user: Fix unaligned accesses.

Use memcpy() to move xfrm_address_t objects in and out
of netlink messages.  The vast majority of xfrm_user was
doing this properly, except for copy_from_user_state()
and copy_to_user_state().

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2006-10-27 15:29:47 -07:00
parent 201a95afaa
commit 54489c14c0

View file

@ -323,7 +323,7 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info *
x->props.replay_window = p->replay_window; x->props.replay_window = p->replay_window;
x->props.reqid = p->reqid; x->props.reqid = p->reqid;
x->props.family = p->family; x->props.family = p->family;
x->props.saddr = p->saddr; memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr));
x->props.flags = p->flags; x->props.flags = p->flags;
} }
@ -545,7 +545,7 @@ static void copy_to_user_state(struct xfrm_state *x, struct xfrm_usersa_info *p)
memcpy(&p->lft, &x->lft, sizeof(p->lft)); memcpy(&p->lft, &x->lft, sizeof(p->lft));
memcpy(&p->curlft, &x->curlft, sizeof(p->curlft)); memcpy(&p->curlft, &x->curlft, sizeof(p->curlft));
memcpy(&p->stats, &x->stats, sizeof(p->stats)); memcpy(&p->stats, &x->stats, sizeof(p->stats));
p->saddr = x->props.saddr; memcpy(&p->saddr, &x->props.saddr, sizeof(p->saddr));
p->mode = x->props.mode; p->mode = x->props.mode;
p->replay_window = x->props.replay_window; p->replay_window = x->props.replay_window;
p->reqid = x->props.reqid; p->reqid = x->props.reqid;