Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -581,9 +581,12 @@ static struct xfrm_state *xfrm_state_construct(struct net *net,
	if (err)
		goto error;

	if (attrs[XFRMA_SEC_CTX] &&
	    security_xfrm_state_alloc(x, nla_data(attrs[XFRMA_SEC_CTX])))
	if (attrs[XFRMA_SEC_CTX]) {
		err = security_xfrm_state_alloc(x,
						nla_data(attrs[XFRMA_SEC_CTX]));
		if (err)
			goto error;
	}

	if ((err = xfrm_alloc_replay_state_esn(&x->replay_esn, &x->preplay_esn,
					       attrs[XFRMA_REPLAY_ESN_VAL])))