Commit 2f30ea50 authored by Mathias Krause's avatar Mathias Krause Committed by Steffen Klassert

xfrm_user: propagate sec ctx allocation errors

When we fail to attach the security context in xfrm_state_construct()
we'll return 0 as error value which, in turn, will wrongly claim success
to userland when, in fact, we won't be adding / updating the XFRM state.

This is a regression introduced by commit fd21150a ("[XFRM] netlink:
Inline attach_encap_tmpl(), attach_sec_ctx(), and attach_one_addr()").

Fix it by propagating the error returned by security_xfrm_state_alloc()
in this case.

Fixes: fd21150a ("[XFRM] netlink: Inline attach_encap_tmpl()...")
Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent 2c2c8e33
...@@ -581,9 +581,12 @@ static struct xfrm_state *xfrm_state_construct(struct net *net, ...@@ -581,9 +581,12 @@ static struct xfrm_state *xfrm_state_construct(struct net *net,
if (err) if (err)
goto error; goto error;
if (attrs[XFRMA_SEC_CTX] && if (attrs[XFRMA_SEC_CTX]) {
security_xfrm_state_alloc(x, nla_data(attrs[XFRMA_SEC_CTX]))) err = security_xfrm_state_alloc(x,
nla_data(attrs[XFRMA_SEC_CTX]));
if (err)
goto error; goto error;
}
if ((err = xfrm_alloc_replay_state_esn(&x->replay_esn, &x->preplay_esn, if ((err = xfrm_alloc_replay_state_esn(&x->replay_esn, &x->preplay_esn,
attrs[XFRMA_REPLAY_ESN_VAL]))) attrs[XFRMA_REPLAY_ESN_VAL])))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment