• Ralf Baechle's avatar
    NET: NETROM: When adding a route verify length of mnemonic string. · ac1a1de3
    Ralf Baechle authored
    struct nr_route_struct's mnemonic permits a string of up to 7 bytes to be
    used.  If userland passes a not zero terminated string to the kernel adding
    a node to the routing table might result in the kernel attempting to read
    copy a too long string.
    
    Mnemonic is part of the NET/ROM routing protocol; NET/ROM routing table
    updates only broadcast 6 bytes.  The 7th byte in the mnemonic array exists
    only as a \0 termination character for the kernel code's convenience.
    
    Fixed by rejecting mnemonic strings that have no terminating \0 in the first
    7 characters.  Do this test only NETROM_NODE to avoid breaking NETROM_NEIGH
    where userland might passing an uninitialized mnemonic field.
    
    Initial patch by Dan Carpenter <dan.carpenter@oracle.com>.
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Walter Harms <wharms@bfs.de>
    Cc: Thomas Osterried <thomas@osterried.de>
    Acked-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ac1a1de3
nr_route.c 23.2 KB