• Sven Eckelmann's avatar
    cfg80211: initialize sinfo in cfg80211_get_station · 3c12d048
    Sven Eckelmann authored
    Most of the implementations behind cfg80211_get_station will not initialize
    sinfo to zero before manipulating it. For example, the member "filled",
    which indicates the filled in parts of this struct, is often only modified
    by enabling certain bits in the bitfield while keeping the remaining bits
    in their original state. A caller without a preinitialized sinfo.filled can
    then no longer decide which parts of sinfo were filled in by
    cfg80211_get_station (or actually the underlying implementations).
    
    cfg80211_get_station must therefore take care that sinfo is initialized to
    zero. Otherwise, the caller may tries to read information which was not
    filled in and which must therefore also be considered uninitialized. In
    batadv_v_elp_get_throughput's case, an invalid "random" expected throughput
    may be stored for this neighbor and thus the B.A.T.M.A.N V algorithm may
    switch to non-optimal neighbors for certain destinations.
    
    Fixes: 7406353d ("cfg80211: implement cfg80211_get_station cfg80211 API")
    Reported-by: default avatarThomas Lauer <holminateur@gmail.com>
    Reported-by: default avatarMarcel Schmidt <ff.z-casparistrasse@mailbox.org>
    Cc: b.a.t.m.a.n@lists.open-mesh.org
    Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
    Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    3c12d048
util.c 41.7 KB