• John W. Linville's avatar
    [IEEE80211]: avoid integer underflow for runt rx frames · 04045f98
    John W. Linville authored
    Reported by Chris Evans <scarybeasts@gmail.com>:
    
    > The summary is that an evil 80211 frame can crash out a victim's
    > machine. It only applies to drivers using the 80211 wireless code, and
    > only then to certain drivers (and even then depends on a card's
    > firmware not dropping a dubious packet). I must confess I'm not
    > keeping track of Linux wireless support, and the different protocol
    > stacks etc.
    >
    > Details are as follows:
    >
    > ieee80211_rx() does not explicitly check that "skb->len >= hdrlen".
    > There are other skb->len checks, but not enough to prevent a subtle
    > off-by-two error if the frame has the IEEE80211_STYPE_QOS_DATA flag
    > set.
    >
    > This leads to integer underflow and crash here:
    >
    > if (frag != 0)
    >    flen -= hdrlen;
    >
    > (flen is subsequently used as a memcpy length parameter).
    
    How about this?
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    04045f98
ieee80211_rx.c 51.3 KB