OSDN Git Service

ipv6: Use memset_after() to zero rt6_info
authorKees Cook <keescook@chromium.org>
Thu, 18 Nov 2021 20:32:41 +0000 (12:32 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Nov 2021 11:51:26 +0000 (11:51 +0000)
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memset(), avoid intentionally writing across
neighboring fields.

Use memset_after() to clear everything after the dst_entry member of
struct rt6_info.

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index 5e8f2f1..ecc6df6 100644 (file)
@@ -328,9 +328,7 @@ static const struct rt6_info ip6_blk_hole_entry_template = {
 
 static void rt6_info_init(struct rt6_info *rt)
 {
-       struct dst_entry *dst = &rt->dst;
-
-       memset(dst + 1, 0, sizeof(*rt) - sizeof(*dst));
+       memset_after(rt, 0, dst);
        INIT_LIST_HEAD(&rt->rt6i_uncached);
 }