RE: [PATCH next] wifi: rtw89: mcc: prevent shift wrapping in rtw89_core_mlsr_switch()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> 
> The "link_id" value comes from the user via debugfs.  If it's larger than BITS_PER_LONG then
> that would result in shift wrapping and potentially an out of bounds access later.  Fortunately,
> only root can write to debugfs files so the security impact is minimal.
> 

Thank you for catching this problem.

> 
> [...]
> 
> @@ -5239,6 +5239,9 @@ int rtw89_core_mlsr_switch(struct rtw89_dev *rtwdev, struct
> rtw89_vif *rtwvif,
>         if (unlikely(!ieee80211_vif_is_mld(vif)))
>                 return -EOPNOTSUPP;
> 
> +       if (unlikely(link_id >= BITS_PER_LONG))
> +               return -EINVAL;
> +

Since I think this problem only comes from dbgfs path, would you like to just add a check in debug.c ?

For example,
(based on 0 <= valid link id < IEEE80211_MLD_MAX_NUM_LINKS < BITS_PER_LONG)

rtw89_debug_priv_mlo_mode_set(...)
{
        ...
        switch (mlo_mode) {
        case RTW89_MLO_MODE_MLSR:
               if (argv >= IEEE80211_MLD_MAX_NUM_LINKS)
                       return -EINVAL;
                ...


>         if (unlikely(!(usable_links & BIT(link_id)))) {
>                 rtw89_warn(rtwdev, "%s: link id %u is not usable\n", __func__,
>                            link_id);
> --
> 2.47.2






[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux