• Cong Wang's avatar
    tipc: fix uninit skb->data in tipc_nl_compat_dumpit() · 47733f9d
    Cong Wang authored
    __tipc_nl_compat_dumpit() has two callers, and it expects them to
    pass a valid nlmsghdr via arg->data. This header is artificial and
    crafted just for __tipc_nl_compat_dumpit().
    
    tipc_nl_compat_publ_dump() does so by putting a genlmsghdr as well
    as some nested attribute, TIPC_NLA_SOCK. But the other caller
    tipc_nl_compat_dumpit() does not, this leaves arg->data uninitialized
    on this call path.
    
    Fix this by just adding a similar nlmsghdr without any payload in
    tipc_nl_compat_dumpit().
    
    This bug exists since day 1, but the recent commit 6ea67769
    ("net: tipc: prepare attrs in __tipc_nl_compat_dumpit()") makes it
    easier to appear.
    
    Reported-and-tested-by: syzbot+0e7181deafa7e0b79923@syzkaller.appspotmail.com
    Fixes: d0796d1e ("tipc: convert legacy nl bearer dump to nl compat")
    Cc: Jon Maloy <jmaloy@redhat.com>
    Cc: Ying Xue <ying.xue@windriver.com>
    Cc: Richard Alpe <richard.alpe@ericsson.com>
    Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Acked-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    47733f9d
netlink_compat.c 34.6 KB