ipv4: don't set IPv6 only flags to IPv4 addresses
authorMatteo Croce <mcroce@redhat.com>
Mon, 1 Jul 2019 17:01:55 +0000 (19:01 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Jul 2019 18:31:38 +0000 (11:31 -0700)
commit2e60546368165c2449564d71f6005dda9205b5fb
treee1f5449e770ac26eae92eef2b752e1f5fcb47794
parent88405680ec57c35f5886dbb81b3f6f638f74f40d
ipv4: don't set IPv6 only flags to IPv4 addresses

Avoid the situation where an IPV6 only flag is applied to an IPv4 address:

    # ip addr add 192.0.2.1/24 dev dummy0 nodad home mngtmpaddr noprefixroute
    # ip -4 addr show dev dummy0
    2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        inet 192.0.2.1/24 scope global noprefixroute dummy0
           valid_lft forever preferred_lft forever

Or worse, by sending a malicious netlink command:

    # ip -4 addr show dev dummy0
    2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        inet 192.0.2.1/24 scope global nodad optimistic dadfailed home tentative mngtmpaddr noprefixroute stable-privacy dummy0
           valid_lft forever preferred_lft forever

Signed-off-by: Matteo Croce <mcroce@redhat.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/devinet.c