• Tuomas Tynkkynen's avatar
    mac80211_hwsim: Use kstrndup() in place of kasprintf() · 7ea86204
    Tuomas Tynkkynen authored
    syzbot reports a warning:
    
    precision 33020 too large
    WARNING: CPU: 0 PID: 9618 at lib/vsprintf.c:2471 set_precision+0x150/0x180 lib/vsprintf.c:2471
     vsnprintf+0xa7b/0x19a0 lib/vsprintf.c:2547
     kvasprintf+0xb2/0x170 lib/kasprintf.c:22
     kasprintf+0xbb/0xf0 lib/kasprintf.c:59
     hwsim_del_radio_nl+0x63a/0x7e0 drivers/net/wireless/mac80211_hwsim.c:3625
     genl_family_rcv_msg_doit net/netlink/genetlink.c:672 [inline]
     ...
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Thus it seems that kasprintf() with "%.*s" format can not be used for
    duplicating a string with arbitrary length. Replace it with kstrndup().
    
    Note that later this string is limited to NL80211_WIPHY_NAME_MAXLEN == 64,
    but the code is simpler this way.
    
    Reported-by: syzbot+6693adf1698864d21734@syzkaller.appspotmail.com
    Reported-by: syzbot+a4aee3f42d7584d76761@syzkaller.appspotmail.com
    Cc: stable@kernel.org
    Signed-off-by: default avatarTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
    Link: https://lore.kernel.org/r/20200410123257.14559-1-tuomas.tynkkynen@iki.fi
    [johannes: add note about length limit]
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    7ea86204
mac80211_hwsim.c 116 KB