• Jozsef Kadlecsik's avatar
    netfilter: nf_ct_ipv4: packets with wrong ihl are invalid · 07153c6e
    Jozsef Kadlecsik authored
    It was reported that the Linux kernel sometimes logs:
    
    klogd: [2629147.402413] kernel BUG at net / netfilter /
    nf_conntrack_proto_tcp.c: 447!
    klogd: [1072212.887368] kernel BUG at net / netfilter /
    nf_conntrack_proto_tcp.c: 392
    
    ipv4_get_l4proto() in nf_conntrack_l3proto_ipv4.c and tcp_error() in
    nf_conntrack_proto_tcp.c should catch malformed packets, so the errors
    at the indicated lines - TCP options parsing - should not happen.
    However, tcp_error() relies on the "dataoff" offset to the TCP header,
    calculated by ipv4_get_l4proto().  But ipv4_get_l4proto() does not check
    bogus ihl values in IPv4 packets, which then can slip through tcp_error()
    and get caught at the TCP options parsing routines.
    
    The patch fixes ipv4_get_l4proto() by invalidating packets with bogus
    ihl value.
    
    The patch closes netfilter bugzilla id 771.
    Signed-off-by: default avatarJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    07153c6e
nf_conntrack_l3proto_ipv4.c 12.7 KB