lkml.org 
[lkml]   [2018]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 143/366] l2tp: reject creation of non-PPP sessions on L2TPv2 tunnels
    3.16.61-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Guillaume Nault <g.nault@alphalink.fr>

    commit de9bada5d389903f4faf33980e6a95a2911c7e6d upstream.

    The /proc/net/pppol2tp handlers (pppol2tp_seq_*()) iterate over all
    L2TPv2 tunnels, and rightfully expect that only PPP sessions can be
    found there. However, l2tp_netlink accepts creating Ethernet sessions
    regardless of the underlying tunnel version.

    This confuses pppol2tp_seq_session_show(), which expects that
    l2tp_session_priv() returns a pppol2tp_session structure. When the
    session is an Ethernet pseudo-wire, a struct l2tp_eth_sess is returned
    instead. This leads to invalid memory access when
    pppol2tp_session_get_sock() later tries to dereference ps->sk.

    Fixes: d9e31d17ceba ("l2tp: Add L2TP ethernet pseudowire support")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    net/l2tp/l2tp_netlink.c | 6 ++++++
    1 file changed, 6 insertions(+)

    --- a/net/l2tp/l2tp_netlink.c
    +++ b/net/l2tp/l2tp_netlink.c
    @@ -460,6 +460,12 @@ static int l2tp_nl_cmd_session_create(st
    goto out_tunnel;
    }

    + /* L2TPv2 only accepts PPP pseudo-wires */
    + if (tunnel->version == 2 && cfg.pw_type != L2TP_PWTYPE_PPP) {
    + ret = -EPROTONOSUPPORT;
    + goto out_tunnel;
    + }
    +
    if (tunnel->version > 2) {
    if (info->attrs[L2TP_ATTR_OFFSET])
    cfg.offset = nla_get_u16(info->attrs[L2TP_ATTR_OFFSET]);
    \
     
     \ /
      Last update: 2018-11-11 21:24    [W:4.081 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site