ila: Fix tailroom allocation of lwtstate
authorThomas Graf <tgraf@suug.ch>
Wed, 19 Oct 2016 21:16:39 +0000 (23:16 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Oct 2016 15:17:55 +0000 (11:17 -0400)
Tailroom is supposed to be of length sizeof(struct ila_lwt) but
sizeof(struct ila_params) is currently allocated.

This leads to the dst_cache and connected member of ila_lwt being
referenced out of bounds.

struct ila_lwt {
struct ila_params p;
struct dst_cache dst_cache;
u32 connected : 1;
};

Fixes: 65d7ab8de582 ("net: Identifier Locator Addressing module")
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ila/ila_lwt.c

index 9fafba62aaa70e0da9fc9b76fc2f567cadb8a1d1..c7a39d07bde8ead9da4bb4bddc36d3f466ea0ead 100644 (file)
@@ -122,7 +122,7 @@ static int ila_build_state(struct net_device *dev, struct nlattr *nla,
        struct ila_lwt *ilwt;
        struct ila_params *p;
        struct nlattr *tb[ILA_ATTR_MAX + 1];
-       size_t encap_len = sizeof(*p);
+       size_t encap_len = sizeof(*ilwt);
        struct lwtunnel_state *newts;
        const struct fib6_config *cfg6 = cfg;
        struct ila_addr *iaddr;