Patch "Revert "xfrm: Fix stack-out-of-bounds read in xfrm_state_find."" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
Revert "xfrm: Fix stack-out-of-bounds read in xfrm_state_find."
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
revert-xfrm-fix-stack-out-of-bounds-read-in-xfrm_state_find.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
94802151894d482e82c324edf2c658f8e6b96508Mon Sep 17 00:00:00 2001
From: Steffen Klassert <[email protected]>
Date: Wed, 15 Nov 2017 06:40:57 +0100
Subject: Revert "xfrm: Fix stack-out-of-bounds read in xfrm_state_find."
From: Steffen Klassert <[email protected]>
commit 94802151894d482e82c324edf2c658f8e6b96508 upstream.
This reverts commit c9f3f813d462c72dbe412cee6a5cbacf13c4ad5e.
This commit breaks transport mode when the policy template has widlcard addresses configured, so revert it.
--- net/xfrm/xfrm_policy.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-)
net/xfrm/xfrm_policy.c +18 -11
@@ -1362,29 +1362,36 @@ xfrm_tmpl_resolve_one(struct xfrm_policystruct net *net =xp_net (policy);int nx;int i, error; +xfrm_address_t *daddr =xfrm_flowi_daddr (fl, family); +xfrm_address_t *saddr =xfrm_flowi_saddr (fl, family);xfrm_address_t tmp;for (nx =0 , i =0 ; i < policy->xfrm_nr; i++) {struct xfrm_state *x; -xfrm_address_t *local; -xfrm_address_t *remote; +xfrm_address_t *remote = daddr; +xfrm_address_t *local = saddr;struct xfrm_tmpl *tmpl = &policy->xfrm_vec[i]; - remote = &tmpl->id.daddr; - local = &tmpl->saddr; -if (xfrm_addr_any (local, tmpl->encap_family)) { - error =xfrm_get_saddr (net, fl->flowi_oif, - &tmp, remote, - tmpl->encap_family,0 ); -if (error) - goto fail; - local = &tmp; +if (tmpl->mode ==XFRM_MODE_TUNNEL || + tmpl->mode ==XFRM_MODE_BEET ) { + remote = &tmpl->id.daddr; + local = &tmpl->saddr; +if (xfrm_addr_any (local, tmpl->encap_family)) { + error =xfrm_get_saddr (net, fl->flowi_oif, + &tmp, remote, + tmpl->encap_family,0 ); +if (error) + goto fail; + local = &tmp; + } } x =xfrm_state_find (remote, local, fl, tmpl, policy, &error, family);if (x && x->km.state ==XFRM_STATE_VALID ) { xfrm[nx++] = x; + daddr = remote; + saddr = local;continue ; }if (x) {
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/revert-xfrm-fix-stack-out-of-bounds-read-in-xfrm_state_find.patch